sql查询-选择count(*)时返回0

o75abkj4  于 2021-06-19  发布在  Mysql
关注(0)|答案(2)|浏览(362)

首先,我已经读了所有标题相同的文章。但没有办法解决我的问题。
我希望我的查询结果是这样的

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\ U cust

id_cust  |  name_cust  |  kategori  |  id_sales

   1     |  Name 1     |  Good      |     9

   2     |  Name 2     |  Good      |     9

   3     |  Name 3     |  Great     |     9
5hcedyr0

5hcedyr01#

根据您的条件(id\u sales=9),tb\u cust中提供的kategori值为“good”、“great”。
你能做的是
步骤1.首先在cte->kategori\u val中有一个块来显示kategori的所有可能值
第二步。左键联接tb\u 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
9fkzdhlc

9fkzdhlc2#

您可能可以通过条件聚合来实现这一点:

SELECT kategori, SUM(id_sales = 9) as hitung
FROM tb_cust
GROUP BY kategori DESC;

这假设类别在表中有一些记录。
如果没有,则可以使用以下类别的查找表:

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;

相关问题