两条 COUNT 语句的 MySQL 总和

标签 mysql count sum

我知道这是一个愚蠢的解决方案,但抱歉,我有点困惑。

我有两个 SELECT COUNT 语句。示例:

声明 1

SELECT COUNT(softwareone) AS totalcount 
FROM my_table WHERE softwareone LIKE '%typeone%'

总数 = 3 _

声明 2

SELECT COUNT(softwaretwo) AS totalcount 
FROM my_table WHERE softwaretwo LIKE '%typeone%'

总计数 = 1

我想将两个总数相加得到 totalcount = 4。有办法做到这一点吗?

注意:“softwareone”和“softwaretwo”列中的软件类型属于同一类型(相同值)。

感谢大家。

最佳答案

一种方法是这样写:

SELECT SUM(CASE WHEN softwareone LIKE '%typeone%'
                 AND softwaretwo LIKE '%typeone%'
                THEN 2
                ELSE 1
            END
          ) AS "totalcount"
  FROM my_table
 WHERE softwareone LIKE '%typeone%'
    OR softwaretwo LIKE '%typeone%'
;

当两个条件都满足时,CASE ... END 表达式的计算结果为 2(因此如果 softwareonesoftwaretwo 都是 LIKE '%typeone%',则该行计数两次)和 1 只有其中一个时。因此,SUM(CASE ... END) 给出满足一个条件的总行数,加上满足另一个条件的总行数。

关于两条 COUNT 语句的 MySQL 总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9775842/

相关文章:

mysql - 如何在mysql中找到组的总和并找到权重?

php - SQL 查询不起作用,但连接已完成

php - 使用 PHP 将 CSV 导入 mysql

php - codeigniter 中的 'Student_Name' 中的未知列 'field list' 文件名 : E:/xampp/htdocs/codeIgniter/CodeIgniter-3. 1.4/system/database/DB_driver.php

java - 通过计算数组结果来做到这一点是明智的方法吗?

SQL - 划分一个值并确保它重新计算为原始值

php - 运行 Nginx 和 PHP5-FPM 时无法更新到最新的 PHPMyAdmin

javascript - 计算 d3 js 中 csv 数据集的文本字段数

java - 在字符串中查找数字字符串并计数

ruby - 在 ruby​​ 中合并或求和 "keys"上的 2 个数组