mysql - MYSQL 中 CASE 内 CASE 的 SUM/COUNT

标签 mysql count sum case

表产品中有以下列:

a  |  b  | cat
--------------
2  |  4  |  1
3  |  1  |  1
4  |  4  |  1
2  |  1  |  1
3  |  2  |  1
5  |  3  |  1
8  |  7  |  2
5  |  3  |  2


$sql = "SELECT 
        SUM(CASE 
            WHEN
            cat = 1
            AND
            a > b  
            THEN 1 else 0 end) as prdplus
        FROM product
       ";

in above query i am getting value for sum or count of a greater then b

这是 3>1 , 2>1 , 3>2 , 5>3

因此上述查询的输出将是:4

prdplus
-------
4

what i need is count value have only +1 in above count of 4

这就是上面的查询,现在我需要 +1 值计数

3-1 = 2
2-1 = 1  // just explanation purpose , output i need in -> plus1 
3-2 = 1  // just explanation purpose , output i need in  -> plus1
5-3 = 2

因此对于上述查询,我​​只需要 +1 计数,即 2

我不知道如何在包含上述查询的情况下编写案例,因为我需要两个计数都显示在我的表格中,如下所示

最终输出:

 prdplus | plus1 
----------------
  4      |  2

最佳答案

SELECT SUM(CASE WHEN a > b  
                THEN 1 
                else 0 
           end) as prdplus,
       SUM(CASE WHEN a - b = 1  
                THEN 1 
                else 0 
           end) as prdplus1
FROM product

关于mysql - MYSQL 中 CASE 内 CASE 的 SUM/COUNT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41757206/

相关文章:

MySQL 并仅使用一些结果

function - 如何调用元组列表的总和?

mysql - 我如何获得这三个 COUNTS() 的总和?

mysql - 仅选择两次具有相同 foreign_id 的条目

MYSQL > 统计同时添加的记录条数

mysql - 使用来自另一个表的 SUM 更新表

python - 如何对特定列中的数字求和?

android - Arraylist 未正确解析

mysql - 表中每个单元格的 CHAR_LENGTH

mysql - 计算有多少行具有相同的值