在 SQLite 中选择前 10 个计数

Selecting top 10 counts in SQLite

我有一个 table 记录问题、他们的答案和他们的作者。列名如下:

id、问题、答案、作者

我想获得写问题最多的前 10 位作者的列表。所以它需要首先计算每个作者写的问题的数量,然后按数量排序,然后 return 前 10 个。

这是在 SQLite 中,我不确定如何获取计数列表。第二部分应该相当简单,因为它只是一个 ORDER BY 和一个 LIMIT 10。我怎样才能将计数放入我可以从中 select 的列表中?

SELECT BY COUNT(author)
    ,author
FROM table_name
GROUP BY author
ORDER BY COUNT(author) DESC LIMIT 10;

您可以将 order by 子句应用于聚合查询:

SELECT   author, COUNT(*)
FROM     mytable
GROUP BY author
ORDER BY 2 DESC
LIMIT    10

您可以将查询包装为子查询,然后像这样使用 LIMIT

SELECT *
FROM (
    SELECT author
        ,COUNT(*) AS cnt
    FROM mytable
    GROUP BY author
    ) t
ORDER BY t.cnt DESC 
LIMIT 10;