Подсчет уникальных значений в подзапросе - PullRequest
0 голосов
/ 30 октября 2018

У меня есть две таблицы, сообщения и голоса, где в голосах есть post_id. Я хочу подсчитать, сколько сообщений имеют 1 голос, 2 голоса, 3 голоса и т. Д.

Когда я использую этот запрос

select count(post_id) from votes group by post_id

Я получаю следующие результаты

3
3
1
2
2
2
1

Теперь я хочу посчитать, сколько раз я получил 3, 2, 1: Итак, я хочу получить

3 2
2 3
1 2

Но когда я пытаюсь подсчитать результаты из подзапроса, я получаю следующую ошибку:

select x,count(x) from (select count(post_id) from votes group by post_id) as x group by x;
ERROR:  column "x.count" must appear in the GROUP BY clause or be used in an aggregate function
LINE 1: select x,count(x) from (select count(post_id) from votes...

И я тоже не могу группировать по количеству, потому что когда я это делаю, я получаю следующее:

  x   | count                                                                                                                                                                                
------+-------                                                                                                                                                                               
 (1)  |     1                                                                                                                                                                                
 (2)  |     2                                                                                                                                                                                
 (3)  |     3 

1 Ответ

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

Вы пытаетесь сгруппировать по x, что означает, что вы пытаетесь сгруппировать весь отбор, а не значение count. В этом проблема.

Если вы группируете только по значению count, вы получите ожидаемый результат:

SELECT 
    x.count_per_post_id,
    count(x.count_per_post_id)
FROM (
    SELECT
        count(post_id) as count_per_post_id
    FROM
        votes
    GROUP BY post_id
) x
GROUP BY x.count_per_post_id

демо: дб <> скрипка

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