2015-06-13 3 views
1

Я не очень хорошо разбираюсь в SQL, и у меня есть очень своеобразный запрос.SQLite: подсчитайте количество похожих строк COUNT (*) в результате оператора GROUP_BY

Моя таблица выглядит следующим образом:

FOO BAR 
----+---- 
foo1 bar1 
foo2 bar3 
foo1 bar1 
foo1 bar1 
foo2 bar3 
foo4 bar3 
foo3 bar2 
foo2 bar4 
foo5 bar4 

я управляю легко подсчитать количество каждого различных "стержневых" записей с

SELECT bar, COUNT(*) as barcount FROM table GROUP BY bar ORDER BY barcount 

, который дает мне

BAR barcount 
----+---- 
bar1 3 
bar2 1 
bar3 3 
bar4 2 

, но я пытаюсь добиться того, что у меня есть таблица, где я знаю, сколько «баров» имеет балл 1, как человек у у вас есть балл 2 раза, у кого есть барок 3etc.

restult мне нужно это, чтобы сделать его простым:

barcount occurences 
--------+----------- 
    1   1 
    2   1 
    3   2 

Можно ли это сделать в одном запросе SQL, или я должен полагаться на какой-то код?

ответ

1

Если вам нужно гнездо агрегатов необходимо использовать производную таблицу (или Common Table Expression):

select barcount, count(*) as occurrences 
from 
(
    SELECT bar, COUNT(*) as barcount 
    FROM table 
    GROUP BY bar 
) as dt 
group by barcount 
ORDER BY barcount 
2
select barcount, count(*) as occurences 
from 
(
    SELECT bar, COUNT(*) as barcount 
    FROM your_table 
    GROUP BY bar 
) tmp 
group by barcount 
0

Вы можете обернуть свой запрос в другой запрос:

SELECT barcount, COUNT(*) AS occurences 
FROM  (SELECT bar, COUNT(*) as barcount 
      FROM  mytable 
      GROUP BY bar) t 
GROUP BY barcount 
ORDER BY barcount 
Смежные вопросы