Упорядочение однострочного массива по количеству в SQLite - PullRequest
0 голосов
/ 02 апреля 2020

Я пытался понять функцию SQLite GROUP_CONCAT . У меня есть простой запрос, который перечисляет значения в столбце раздела в моей таблице, или упорядочено по частоте их появления (чаще всего сначала):

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

Однако результаты этого запроса, похоже, не сгруппированы по способу Я ожидаю, что есть несколько вхождений каждого раздела.

DBVisualizer screenshot showing lengthy array

Что SQL я должен написать для репликации первого запроса, но с результатами представлены в виде списка через запятую в одной строке?

1 Ответ

1 голос
/ 02 апреля 2020

Для этого вам понадобится два уровня агрегации. Сначала соберите по section и посчитайте, сколько строк в каждой группе, отсортируйте, а затем сгенерируйте строку csv:

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