带有GROUP BY的SQL COUNT(*)和带有总计数的最后一行



我想在一个组上使用COUNT(*),然后在最后再使用一行来给出完整计数。我已经使用UNION在一个单独的子查询中运行了没有GROUP BYCOUNT(*),以给出总计数,但这种方法似乎效率低下。有办法把两者结合起来吗?

SELECT PCUST, COUNT(*) FROM PAYMENT 
WHERE PAYMENT_DATE = '2020-12-30'
GROUP BY PCUST
UNION
SELECT 'TOTAL', COUNT(*) FROM PAYMENT
WHERE PAYMENT_DATE = '2020-12-30'

正如您从上面的查询中看到的,我正在重复相同的条件来获得部分计数和总数。Plz提出了任何优化方法。

DB2支持GROUPING SETS。假设没有PCUST值是NULL,并且它是一个字符串,最简单的方法是:

SELECT COALESCE(PCUST, 'TOTAL'), COUNT(*)
FROM PAYMENT 
WHERE PAYMENT_DATE = '2020-12-30'
GROUP BY GROUPING_SETS ( (PCUST), () )

最新更新