mysql - 将具有不同 WHERE 和 GROUP BY 的行计数为 1 个结果

标签 mysql sql count

T1 - id, name, userID (stocks) - not really used in this cased
T2 - id, name, stockID, userID (categories)
T3 - id, name, stockID, categoryID, quality, userID (goods)

“质量”列可以是“0”(好)或“1”(差),并且每个商品(即使是相同的排序)= 1 行

这个 SQL(我能得到的“远”)仅显示好东西和坏东西的总数,如果类别存在,但没有任何行,那么它不会显示在最终结果中:

SELECT T2.name, COUNT(*) AS TOTAL FROM T3
LEFT JOIN T2 ON T2.id=T3.categoryID
WHERE T3.stockID=2 GROUP BY T3.categoryID

结果:

CATEGORY  - TOTAL
category1 - 1237
category2 -  857
category3 -  125

没有显示category4,因为不存在行,但我需要显示每一行,即使T3行不存在并且当然有坏的东西计数..

期望的结果:

CATEGORY  - BAD / TOTAL
category1 - 425 / 1237
category2 - 326 /  857
category3 -   0 /  125
category4 -   0 /    0

最佳答案

SELECT T2.name, SUM(CASE WHEN T3.quality=1 THEN 1 ELSE 0 END)AS BAD,
       COUNT(*)AS TOTAL 
FROM T2
LEFT JOIN T3 ON T2.id=T3.categoryID
WHERE t2.stockid=2
GROUP BY T2.name;

关于mysql - 将具有不同 WHERE 和 GROUP BY 的行计数为 1 个结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21799485/

相关文章:

java - 计算txt文件中的周数

SELECT ip 上的 C# MySQL 参数 addwithvalue,estado FROM @table 不起作用

php - 改进sql查询中的if语句

MySQL 查询 : retrieve some rows based on keys in another table

sql - 如何增加 SQL 查询/存储过程的百分比?

sql - 可以应用哪些通用技术来优化 SQL 查询?

c++ - std::vector 中的重复元素

Mysql 计数频率

javascript - 当用户属于某个组时,如何在 JS 中创建弹出窗口?

php - 如何选择数据到数组字段?