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), () );
这是我的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), () );