Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Oracle:如何获取GROUP BY的求和结果,如何选择不相同条件的数据_Sql_Oracle_Oracle11g - Fatal编程技术网

SQL Oracle:如何获取GROUP BY的求和结果,如何选择不相同条件的数据

SQL 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

这是我的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,那么上面的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',这样它就可以工作了@奥弗维塔。我认为这是问题中的一个错误。我更新了答案。