我有一个类的类和类别列表。我想显示每个类别有多少个类。像这样:
category | # of classes
Sports | 12
Fitness | 32
Climbing | 8
设置表格,以便每个类都在包含类别的行上。
category | class_name
fitness | Learn to Skate
我有以下SQL,它生成一个不同类别的列表:
select
distinct category
from classes
order by category asc
; Output:
; Fitness
; Climbing
; Recreation
; ...
我还想显示有多少个类。我认为这很简单:
select
distinct category,
count(distinct category)
from classes
order by category asc
; Output:
; Fitness | 11
输出几乎可以工作,但它只产生一行。没有count()
它会产生11行,如预期的那样。为什么这只产生一行?我怎样才能做到这一点?
答案 0 :(得分:4)
您正在使用没有COUNT
子句的聚合函数(GROUP BY
),然后mysql不知道您希望如何聚合数据:
SELECT
category,
count(category) as category_count
FROM classes
GROUP BY category
ORDER BY category ASC