这是我当前的查询:
SELECT locationname, eventid
FROM events
GROUP BY locationname
ORDER BY locationname ASC
正如您所看到的,它是按位置名称分组的,因为有几行具有相同的位置名称。
在输出中,我只需要一个“不同”(分组)位置的列表,但每个位置后面应该有每个位置的总量。
因此,如果“events”中有 4 个位置名称为“Congress Center NYC”,则输出应为“Congress Center NYC (4)”。
有没有办法用 COUNT() 扩展查询?
谢谢!
这是一个简单的聚合查询。
SELECT locationname, COUNT(*) number
FROM events
GROUP BY locationname
ORDER BY locationname
如果您想要特定的格式,您可以使用查询的第一行来获取它。
SELECT CONCAT(locationname, ' (', COUNT(*), ')')
选择
COUNT(locationname)
应该可以满足您的需求。即
SELECT locationname, COUNT(locationname)
FROM events
GROUP BY locationname
ORDER BY locationname ASC
在您的查询示例中有“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
SELECT locationname, locationname+quotename(COUNT(distinct locationname),'()')
FROM events GROUP BY locationname
如果不起作用,请在评论中告诉我 注意:在发布 qn 之前,请说明您需要哪种数据库