【问题标题】:Selecting top 10 counts in SQLite选择 SQLite 中的前 10 个计数
【发布时间】:2015-11-13 08:11:50
【问题描述】:
我有一张记录问题、答案和作者的表格。列名如下:
id、问题、答案、作者
我想获得一个写出最多问题的前 10 位作者的名单。所以它需要先计算每个作者写的问题的数量,然后按数量对它们进行排序,然后返回前 10 个。
这是在 SQLite 中,我不确定如何获取计数列表。第二部分应该相当简单,因为它只是一个ORDER BY 和一个LIMIT 10。如何将计数放入可以从中选择的列表中?
【问题讨论】:
-
也许您想要一个WITH statement,它允许您在查询期间从伪表中SELECT?要获得实际的计数列表,请查看 GROUP BY 和 COUNT 语句/函数。
标签:
sql
select
sqlite
top-n
【解决方案1】:
SELECT BY COUNT(author)
,author
FROM table_name
GROUP BY author
ORDER BY COUNT(author) DESC LIMIT 10;
【解决方案2】:
您可以将order by 子句应用于聚合查询:
SELECT author, COUNT(*)
FROM mytable
GROUP BY author
ORDER BY 2 DESC
LIMIT 10
【解决方案3】:
您可以将查询包装为子查询,然后像这样使用LIMIT:
SELECT *
FROM (
SELECT author
,COUNT(*) AS cnt
FROM mytable
GROUP BY author
) t
ORDER BY t.cnt DESC
LIMIT 10;