SQL:COUNT()分组结果

时间:2016-11-13 18:16:22

标签: mysql sql group-by aggregate-functions

这是我当前的查询:

SELECT locationname, eventid
FROM events
GROUP BY locationname
ORDER BY locationname ASC

正如您所见,它按位置名称分组,因为有多个行具有相同的位置名称。

在输出中我只需要一个“不同的”(分组)位置列表,但在每个位置后面应该有每个位置的总量。

因此,如果在“events”中有4个地点名称与“Congress Center NYC”,则输出应为“Congress Center NYC(4)”。

有没有办法用COUNT()扩展查询?

谢谢!

3 个答案:

答案 0 :(得分:3)

这是一个简单的聚合查询。

SELECT locationname, COUNT(*) number
  FROM events
 GROUP BY locationname
 ORDER BY locationname

如果您需要特定格式,可以使用查询的第一行获取格式。

 SELECT CONCAT(locationname, ' (', COUNT(*), ')')

答案 1 :(得分:2)

选择COUNT(locationname)应该做你想要的。即。

SELECT locationname, COUNT(locationname)
FROM events
GROUP BY locationname
ORDER BY locationname ASC

答案 2 :(得分:0)

在您的查询示例中有“event_id”,当您添加分组时,您将收到第一个出现的行的“event_id”,其中包含相同的“locationame”, 您可以使用group_concat获取所有事件并同时执行计数

SELECT locationname, group_concat(eventid), count(eventid) as number
FROM events
GROUP BY locationname
ORDER BY locationname ASC

你也可以使用concat函数来完全按照你写的那样输出

SELECT concat(locationname, ' (', count(*), ')')
FROM events
GROUP BY locationname
ORDER BY locationname ASC