我需要获得包含多列重复数据的TOTAL条目数。在他所拥有的this页面上完成同样的事情,
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
除了我需要总和(COUNT())。我尝试过总结,并删除group by子句,但我仍然会遇到错误。
答案 0 :(得分:2)
您可以通过将分组计数作为子查询来执行此操作:
SELECT sum(sub.counts) FROM (
SELECT COL_1, COL_2, COL_3, COL_4, COUNT(*) as counts
FROM MyTable
GROUP BY COL_1, COL_2, COL_3, COL_4
HAVING COUNT(*) > 1
) sub;
最重要的是给原始的'COUNT(*)'一个名称,这样你就可以在外部查询中轻松引用它。
答案 1 :(得分:1)
您可以使用with rollup
SELECT COL_1, COL_2, COL_3, COL_4, COUNT(*) as cnt
FROM MyTable
GROUP BY COL_1, COL_2, COL_3, COL_4 WITH ROLLUP
HAVING cnt > 1
最后一行将产生总计。
SELECT COL_1, COL_2, COL_3, COL_4, COUNT(*) as cnt
FROM MyTable
GROUP BY COL_1, COL_2, COL_3, COL_4 WITH ROLLUP
HAVING cnt > 1
ORDER BY (COL_1 IS NOT NULL) ASC
这将产生相同的结果,但总计为第一行。