Как найти повторяющиеся числа среди нескольких столбцов? - PullRequest
3 голосов
/ 01 марта 2011

Вот пример таблицы, которая имитирует мой сценарий:

COL_1   COL_2   COL_3   COL_4   LAST_COL
A       P       X       NY      10
A       P       X       NY      11
A       P       Y       NY      12
A       P       Y       NY      13
A       P       X       NY      14
B       Q       X       NY      15
B       Q       Y       NY      16
B       Q       Y       CA      17
B       Q       Y       CA      18

LAST_COL - это первичный ключ, поэтому он будет отличаться каждый раз.

Я хочу игнорировать LAST_COL и собрать несколькостатистика, относящаяся к остальным 4 столбцам.

По сути, в моей таблице миллионы строк, и я хочу знать, какой набор COL_1, COL_2, COL_3 and COL_4 имеет наибольшее количество строк.

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

COL_1   COL_2   COL_3   COL_4   TOTAL
A       P       X       NY      3
A       P       Y       NY      2
B       Q       X       NY      1
B       Q       Y       NY      1
B       Q       Y       CA      2

Спасибо всем, кто помогает мне в этом.

* Я использую MS SQL, если это что-то изменит.

Ответы [ 4 ]

9 голосов
/ 01 марта 2011
SELECT COL_1, COL_2, COL_3, COL_4, COUNT(*)
FROM MyTable
GROUP BY COL_1, COL_2, COL_3, COL_4

Если вы хотите отсеять строки, которые не имеют дубликатов:

SELECT COL_1, COL_2, COL_3, COL_4, COUNT(*)
FROM MyTable
GROUP BY COL_1, COL_2, COL_3, COL_4
HAVING COUNT(*) > 1
1 голос
/ 02 марта 2011

имеют наибольшее количество строк

Итак, вы хотите сосчитать, а затем ЗАКАЗАТЬ ПО счету DESC

SELECT    COL_1, COL_2, COL_3, COL_4, COUNT(*) COUNT_ROWS
FROM      TBL
GROUP BY  COL_1, COL_2, COL_3, COL_4
ORDER BY  COUNT_ROWS DESC
1 голос
/ 01 марта 2011

Если я правильно понимаю, все, что вам нужно, это что-то вроде:

SELECT COL_1,COL_2,COL_3,COL_4, COUNT(*) AS TOTAL
FROM table
GROUP BY COL_1,COL_2,COL_3,COL_4
1 голос
/ 01 марта 2011

GROUP BY - это то, что вы хотите здесь.Например:

SELECT COL_1, COL_2, COL_3, COL_4, COUNT(*)
FROM my_table
GROUP BY COL_1, COL_2, COL_3, COL_4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...