作业帮 > 综合 > 作业

问个sql语句,统计两个字段组合的行数,要把行数为0的情况也列出来,

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/12 04:40:31
问个sql语句,统计两个字段组合的行数,要把行数为0的情况也列出来,
id | brand |
+-------------+-------+|
| 1001 | A |
| 1002 | A |
| 1002 | B |
| 1002 | B |
| 1002 | B |
| 1002 | C |
| 1003 | A |
| 1003 | B |
| 1003 | C |
| 1004 | A |
| 1004 | A |
| 1004 | B |
| 1005 | A |
| 1005 | A |
假设我有如上的数据,表的名字假设为info吧,我想得到如下的的输出,
就是多出来的num字段,是对id和brand组合的计数统计,关键问题是,比如1001和B的组合是没有的,但是也要给出一个0,来表示没有这个组合,其实如果是直接忽略掉次数为0的这种情况是比较简单的,但是一定要把为0的情况也列出来.我实在想不出来了,
id | brand |num
+-------------+-------+-------
| 1001 | A |2
| 1001 | B |0
| 1001 | C |0
| 1002 | A |1
| 1002 | B |3
| 1002 | C |1
| 1003 | A |1
| 1003 | B |1
| 1003 | C |1
| 1004 | A |2
| 1004 | B |1
| 1004 | C |0
| 1005 | A |2
| 1005 | B |0
| 1005 | C |0
try

SELECT t.id,t.brand, count(info.id)
FROM (SELECT DISTINCT t1.brand, info.id from (SELECT distinct brand from info) t1, info) t LEFT JOIN info
ON t.brand = info.brand and t.id = info.id
group by t.id,t.brand
order by t.id