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