在SQLite中按计数排序单行数组

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

我一直试图理解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

但是,该查询的结果似乎并没有按照我期望的方式进行分组,每个部分都有多次出现。

DBVisualizer screenshot showing lengthy array

我应该写什么SQL来复制第一个查询,但结果以一行的逗号分隔列表形式显示?

sql sqlite group-concat
2个回答
1
投票

您将需要两个聚合级别。首先按section进行聚合,计算每个组中有多少行,进行排序,然后生成csv字符串:

select group_concat(section, ',')
from (
    select section
    from analytics_analyticevent
    group by section
    order by count(*) desc
) t

-1
投票

如果只需要不同的部分,则可以使用:

SELECT GROUP_CONCAT(DISTINCT section, ', ')
FROM analytics_analyticevent;
© www.soinside.com 2019 - 2024. All rights reserved.