在 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
我一直在努力理解 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