Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何在多个列中查找重复计数?_Sql_Database_Sql Server 2005_Tsql - Fatal编程技术网

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

Sql 如何在多个列中查找重复计数?,sql,database,sql-server-2005,tsql,Sql,Database,Sql Server 2005,Tsql,下面是一个模拟我的场景的示例表: 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

下面是一个模拟我的场景的示例表:

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
最后一列是主键,因此每次都会不同

我想忽略最后一列,收集与其余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

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

分组方式是您在这里想要的。例如:

SELECT COL_1, COL_2, COL_3, COL_4, COUNT(*)
FROM my_table
GROUP BY COL_1, COL_2, COL_3, COL_4

如果我理解正确,您需要的是:

SELECT COL_1,COL_2,COL_3,COL_4, COUNT(*) AS TOTAL
FROM table
GROUP BY COL_1,COL_2,COL_3,COL_4
您的行数最多

因此,您需要计数,然后按计数说明排序

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

我忘了提到解决方案应该可以扩展到多个列。问题中的示例是为了简单起见,但是我有6到7列,我想在这些列上运行统计查询。