选择不同的值,并计算出现次数

时间:2014-08-21 19:30:06

标签: mysql

我有一个类的类和类别列表。我想显示每个类别有多少个类。像这样:

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行,如预期的那样。为什么这只产生一行?我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:4)

您正在使用没有COUNT子句的聚合函数(GROUP BY),然后mysql不知道您希望如何聚合数据:

SELECT 
  category,
  count(category) as category_count
FROM classes
GROUP BY category
ORDER BY category ASC