我一直试图理解SQLite的GROUP_CONCAT函数。我有一个简单的查询,该查询列出了表的section列中的值,并按它们出现的频率排序(最频繁的出现在前):
SELECT section
FROM analytics_analyticevent
GROUP BY section
ORDER BY COUNT(*) DESC
部分21个1001283975641311
我希望将结果显示为以逗号分隔的列表,以便可以将其剪切并粘贴到Python脚本中的数组中。我希望以下操作可以解决问题(参见here):
SELECT GROUP_CONCAT(section, ', ')
FROM analytics_analyticevent
GROUP BY section
ORDER BY COUNT(*) DESC
但是,该查询的结果似乎并没有按照我期望的方式进行分组,每个部分都有多次出现。
我应该写什么SQL来复制第一个查询,但结果以一行的逗号分隔列表形式显示?
您将需要两个聚合级别。首先按section
进行聚合,计算每个组中有多少行,进行排序,然后生成csv字符串:
select group_concat(section, ',')
from (
select section
from analytics_analyticevent
group by section
order by count(*) desc
) t
如果只需要不同的部分,则可以使用:
SELECT GROUP_CONCAT(DISTINCT section, ', ')
FROM analytics_analyticevent;