sql - SQL Oracle:如何获取 GROUP BY 的求和结果,如何选择条件不同的数据
问题描述
这是我的 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), () );
推荐阅读
- google-cloud-platform - Google Cloud Functions Execution Time & Limitations
- python-3.x - 使用python脚本验证定义的SVN是否存在:Externals
- c++11 - 如何将 val 分配给动态矩阵的特征块
- mysql - 如何使用flutter将下拉按钮值插入数据库mysql
- javascript - Karma 没有存储提供程序,但已添加
- python - 为什么我尝试安装 pyaudio 时出现错误?
- javascript - 如何将多个html表格并排导出为pdf
- ansible - 如何实现剧本_我的命令“集群运行 vm_status.py”询问密码
- docker - docker create pptp client using network mode bridge 失败
- python - 对传递给函数的参数列表执行操作