首先,我已经阅读了所有具有相同标题的帖子。但是没有解决方案可以解决我的问题。
我希望我的查询结果是这样的
kategori | hitung
Good | 2
Nice | 0
great | 1
使用此查询:
SELECT kategori, COALESCE(COUNT(kategori), 0) AS hitung FROM tb_cust WHERE id_sales=9 GROUP BY kategori DESC
但是结果仅返回2个数据:
kategori | hitung
Good | 2
great | 1
我的查询是否错误?
编辑:
这是我的表及其中的数据
表名称:tb_cust
id_cust | name_cust | kategori | id_sales
1 | Name 1 | Good | 9
2 | Name 2 | Good | 9
3 | Name 3 | Great | 9
答案 0 :(得分:1)
根据您的条件(WHERE id_sales = 9),tb_cust中可用的kategori值是“好”,“好”。
相反,您可以拥有的是
第1步:首先在cte-> kategori_val中添加一个块,以显示kategori的所有可能值
第2步。与tb_cust中的数据左连接并获取记录数
-我想“ with”在mysql数据库中不起作用
select a.kategori,count(b.kategori) as hitung
from (select distinct kategori /*I am assuming we have Good,Great and Nice available in tb_cust*/
from tb_cust) a
left join tb_cust b
on a.kategori=b.kategori
and b.id_sales=9
group by a.kategori
order by 2 DESC
答案 1 :(得分:0)
您可以通过条件聚合来做到这一点:
SELECT kategori, SUM(id_sales = 9) as hitung
FROM tb_cust
GROUP BY kategori DESC;
这假定类别在表中有 some 条记录。
如果没有,则可以将查找表用于以下类别:
SELECT k.kategori, SUM(c.id_sales = 9) as hitung
FROM tb_kategori k LEFT JOIN
tb_cust c
ON k.kategori = c.kategori
GROUP BY k.kategori DESC;