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

Ordering single line array by count in SQLite

我一直在努力理解 SQLite 的 GROUP_CONCAT 功能。我有一个简单的查询,列出了我的 table 部分列中的值,按它们出现的频率排序(最频繁的在前):

SELECT section
FROM analytics_analyticevent
GROUP BY section
ORDER BY COUNT(*) DESC

section
2
1
10
0
12
8
3
9
7
5
6
4
13
11

我希望结果以逗号分隔的列表形式显示,以便我可以将它们剪切并粘贴到 Python 脚本中的数组中。我希望以下内容可以解决问题 (c.f.):

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