2015-10-27 3 views
1

Таблица выглядит следующим образом:SQLite выбрать наиболее распространенный

A  B 
---------- 
John  a 
John  a 
Peter a 
Mary  b 
Ann  b 
Ann  b 

Я хочу, чтобы результат является группа по B и выбрать наиболее общее слово из A:

A  B 
---------- 
John  a 
Ann  b 
+0

Какую версию SQLite вы используете? –

+0

Использование SQLite версии 3.9.1 – Joey1128

ответ

0

Сначала рассчитать количество B, A, тогда для BI вычисляется максимальное число (MaxN), и, наконец, во внешнем запросе счет рассчитывается снова, но показаны только линии, которые имеют maxN=COUNT(*):

SELECT t.B, t.A, COUNT(*) as N 
FROM Table t LEFT JOIN 
(SELECT B, MAX(N) AS MaxN 
FROM (
    SELECT B, A, count(*) as N 
    FROM Table 
    GROUP BY B, A) as c 
GROUP BY B) as mx on t.B=mx.B 
GROUP BY t.B, t.A 
HAVING mx.MaxN=COUNT(*); 
Смежные вопросы