SQL: COUNT() 分组结果

问题描述 投票:0回答:4

这是我当前的查询:

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

正如您所看到的,它是按位置名称分组的,因为有几行具有相同的位置名称。

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

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

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

谢谢!

mysql sql group-by aggregate-functions
4个回答
3
投票

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

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

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

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

2
投票

选择

COUNT(locationname)
应该可以满足您的需求。即

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

0
投票

在您的查询示例中有“event_id”,当您添加分组时,您将收到具有相同“locationame”的第一个发生行的“event_id”, 您可以使用 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

0
投票
SELECT locationname, locationname+quotename(COUNT(distinct locationname),'()')
FROM events GROUP BY locationname

如果不起作用,请在评论中告诉我 注意:在发布 qn 之前,请说明您需要哪种数据库

© www.soinside.com 2019 - 2024. All rights reserved.