SQL Oracle:如何获取GROUP BY的求和结果,如何选择不相同条件的数据
这是我的sqlSQL Oracle:如何获取GROUP BY的求和结果,如何选择不相同条件的数据,sql,oracle,oracle11g,Sql,Oracle,Oracle11g,这是我的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
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,那么上面的sql是无法修复的
你认为它有用吗
,请告诉我谢谢。一种方法是分组集。但是此查询不需要
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), () );
一种方法是对集合进行分组。但是此查询不需要
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), () );
1) 没有必要把所有人联合起来。只是分组。如果我想得到userType='N'user\u date不应该为NULL,但是如果我想得到userType='Y'userType='Y'user\u date就是Y user\u date,我不能把这些东西组合在一起。
其中(userType='N'和user\u date不为NULL)或userType='Y'
没问题,我们都在这里学习。非常感谢,它现在正在工作!1) 没有必要把所有人联合起来。只是分组。如果我想得到userType='N'user\u date不应该为NULL,但是如果我想得到userType='Y'userType='Y'user\u date就是Y user\u date,我不能把这些东西组合在一起。其中(userType='N'和user\u date不为NULL)或userType='Y'
没问题,我们都在这里学习。非常感谢,它现在正在工作!我对userType='N'有一个问题,因为它的user_日期不应该为null。但是如果userType='Y'user_日期可以是任何值。谢谢兄弟!我刚刚更改了WHERE-to-WHERE(userType='N'和user_-date不为NULL)或userType='Y',这样它就可以工作了@奥弗维塔。我认为这是问题中的一个错误。我更新了答案。我发现userType='N'有问题,因为它的user\u日期不应该为null。但是如果userType='Y'user\u日期可以是任何值。谢谢兄弟!我刚刚更改了WHERE-to-WHERE(userType='N'和user_-date不为NULL)或userType='Y',这样它就可以工作了@奥弗维塔。我认为这是问题中的一个错误。我更新了答案。