SQL Oracle : 如何得到 GROUP BY 的求和结果,如何 select 不相同条件的数据

SQL Oracle : How to get the sum result of GROUP BY , How to select data that not the same condition

这是我的sql

SELECT userType , COUNT(*) total
FROM tableA
WHERE userType = 'N'
AND user_date IS NOT NULL
GROUP BY userType 
UNION ALL
SELECT userType , COUNT(*) total
FROM tableA
WHERE userType = 'Y'
GROUP BY userType;

结果是

___________ ________
| USERTYPE | TOTAL |
--------------------
| N        | 5     |
| Y        | 4     |
--------------------

我的问题是如何得到这样的结果。

___________ ________
| USERTYPE | TOTAL |
--------------------
| N        | 5     |
| Y        | 4     |
| SUM      | 9     |
--------------------

或者,如果它不能是总价值的总和,那么它应该是什么。 如果您有更好的方法可以更改它,我在顶部的 sql 无法修复 你认为它有用吗 ,请告诉我谢谢。

一种方法是grouping sets。但是此查询不需要 union

SELECT COALESCE(userType, 'SUM'), COUNT(*) as total
FROM tableA
WHERE (userType = 'N' AND user_date IS NOT NULL) OR
      userType = 'Y' 
GROUP BY GROUPING SETS ( (userType), () );