Как посчитать дубликаты строк внутри postgres? - PullRequest
6 голосов
/ 15 ноября 2011

Я хочу иметь возможность создавать гистограмму из кортежа, содержащего два целых значения. Использование postgresql.

Вот это запрос:

 SELECT temp.ad_id, temp.distance  as hits FROM ( 
 'UNION ALL .join(cupound_query)' # python
) as temp GROUP BY temp.ad_id,temp.distance 

РЕДАКТИРОВАТЬ : лучший пример того, что я хочу

Для этого ввода:

(51, 5)
(51, 0)
(51, 3)
(51, 0)
(88, 2)
(88, 2)
(88, 2)
(84, 1)
(81, 9)

Будет:

 (88,2) : 3
 (51,0) : 2
 (51,3) : 1
 (51,5) : 1
 (84,1) : 1
 (81,9) : 1

Как я могу создать гистограмму этих значений? Проще говоря, как я могу посчитать, сколько раз в строке есть дубликат?

Спасибо

Ответы [ 3 ]

14 голосов
/ 15 ноября 2011

Ваш вопрос оставляет место для толкования. Этот тестовый пример показывает 2 вложенных шага:

CREATE TEMP TABLE x (ad_id int, distance int);
INSERT INTO x VALUES
 (510, 0),(956, 3),(823, 3),(880, 2)
,(523, 3),(467, 0),(843, 1),(816, 9)
,(533, 4),(721, 7),(288, 3),(900, 3)
,(526, 9),(750, 7),(302, 8),(463, 6)
,(742, 8),(804, 2),(62,  7),(880, 2)
,(523, 3),(467, 0),(843, 1),(816, 9)
,(533, 4),(721, 7),(288, 3),(900, 3)
,(526, 9),(750, 7),(302, 8),(816, 9)
,(533, 4),(721, 7),(288, 3),(900, 3)
,(533, 4),(721, 7),(288, 3),(396, 5);

Сколько дубликатов на значение?

SELECT ad_id, count(*) AS ct FROM x GROUP BY 1;

Результат:

ad_id  | ct
-------+----
62     | 1
288    | 4
302    | 2
396    | 1
...

Чтение: ad_id 62 существует 1x, ad_id 288 существует 4 раза, ...


«Как подсчитать, сколько раз в строке есть дубликат?»

SELECT ct
      ,COUNT (*) AS ct_ct
FROM   (SELECT ad_id, COUNT (*) AS ct FROM x GROUP  BY 1) a
GROUP BY 1
ORDER BY 1;

Результат:

 ct | ct_ct
----+---
1   | 8
2   | 7
3   | 2
4   | 3

Чтение: 8 вхождений «ad_id уникален», 7 вхождений «2 строки с одинаковыми ad_id», ...

2 голосов
/ 15 ноября 2011

Просто добавьте count(*) к вашему выбору:

SELECT temp.ad_id, temp.distance as hits, count(*)
....
0 голосов
/ 15 ноября 2011

Ниже приведено руководство по созданию гистограмм непосредственно в SQL с использованием Postgres:

Простые гистограммы в SQL

Я думаю, вы могли бы легко адаптировать этот пример к структуре вашей таблицы.

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