Как правильно завершить кросс-таблицу в следующем сегменте в SQL? - PullRequest
0 голосов
/ 16 октября 2018

Я создаю частоты на один столбец в SQL стандартным способом.Мой код:

select id , count(*) as counts   
from TABLE    
group by id   
order by counts desc

Предположим, что для шести идентификаторов

 id  counts
 --  -----
 1    3  two id have 3 counts per
 2    3 
 ---------
 3    6  three id have 6 counts per
 4    6
 5    6
 ---------
 6    2  one id has 2 counts

вывод следующий: Как я могу произвести следующее?

nid  counts
---  ------
 1     2
 2     3
 3     6

Я пишу в среде улья, но это должен быть стандартный SQL.Заранее спасибо за ответ.

Ответы [ 2 ]

0 голосов
/ 16 октября 2018

Попробуйте это:

SELECT count(*) as nid, counts
FROM 
(select id , count(*) as counts   
      from TABLE    
      group by id 
) a  
GROUP BY counts
ORDER BY counts;
0 голосов
/ 16 октября 2018

Вы хотите два уровня агрегации:

select counts, count(*)
from (select id , count(*) as counts   
      from TABLE    
      group by id 
     ) c  
group by counts
order by counts;

Я называю это запросом "гистограмма гистограмм".Я обычно включаю min(id) и max(id) во внешний select, поэтому у меня есть примеры идентификаторов с заданными частотами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...