这是我当前的查询:
SELECT locationname, eventid
FROM events
GROUP BY locationname
ORDER BY locationname ASC
正如您所见,它按位置名称分组,因为有多个行具有相同的位置名称。
在输出中我只需要一个“不同的”(分组)位置列表,但在每个位置后面应该有每个位置的总量。
因此,如果在“events”中有4个地点名称与“Congress Center NYC”,则输出应为“Congress Center NYC(4)”。
有没有办法用COUNT()扩展查询?
谢谢!
答案 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