【问题标题】:Ordering single line array by count in SQLite在 SQLite 中按计数排序单行数组
【发布时间】:2020-07-14 05:15:33
【问题描述】:

我一直在尝试理解 SQLite 的 GROUP_CONCAT 函数。我有一个简单的查询,列出了我的表中 section 列中的值,按它们出现的频率排序(最频繁的在前):

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

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

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

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

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

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

【问题讨论】:

    标签: sql sqlite group-concat


    【解决方案1】:

    为此,您需要两个级别的聚合。先按section聚合,统计每组有多少行,排序,然后生成csv字符串:

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

    【讨论】:

      猜你喜欢
      • 2011-10-08
      • 2013-01-20
      • 2019-11-09
      • 1970-01-01
      • 1970-01-01
      • 2013-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多