如何在多列中查找重复计数?

3

这里是一个模拟我的情境的示例表格:

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和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,如果这会有任何影响。


我忘了提一下,解决方案应该能够扩展到多个列。问题中的示例只是为了简单起见,但是我有6到7列需要运行统计查询。 - bits
4个回答

9
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

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

1

如果我理解正确,你所需要的只是类似于:

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
你想要统计行数,然后按照行数降序排列。
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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接