2015-08-19 2 views
3

У меня есть таблица, в которой записываются вопросы, их ответы и их авторы. Названия столбцов следующим образом:Выбор 10 лучших в SQLite

идентификатор, вопрос, ответы, автор

Я хотел бы получить список 10 лучших авторов, пишущих на большинство вопросов. Поэтому сначала нужно подсчитать количество вопросов, которые написал каждый автор, затем отсортировать их по счету, а затем вернуть верхнюю часть.

Это в SQLite, и я не совсем уверен, как получить список подсчетов. Вторая часть должна быть довольно простой, так как это всего лишь ORDER BY и LIMIT 10. Как я могу получить подсчеты в список, который я могу выбрать?

+0

Может быть, вы хотите [WITH statement] (https://www.sqlite.org/lang_with.html), который позволит вам «SELECT» из таблицы psuedo в течение всего вашего запроса? Чтобы получить фактический список отсчетов, загляните в 'GROUP BY' и' COUNT' statement/function. –

ответ

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

Вы можете применить order by пункт к совокупному запросу:

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

Вы можете обернуть ваш запрос как подзапрос, а затем использовать LIMIT так:

SELECT * 
FROM (
    SELECT author 
     ,COUNT(*) AS cnt 
    FROM mytable 
    GROUP BY author 
    ) t 
ORDER BY t.cnt DESC 
LIMIT 10; 
Смежные вопросы