mysql - 仅使用 select 和 case 语句分别内联查找正数和负数的总数
问题描述
我有个问题。如果给我一个包含正数和负数的表格,我想分别查找所有正数的总数和所有负数的总数,并将其显示在一行中。我能够想出一种解决方案(如下)。我想检查是否可以使用 Select 和 CASE 语句获得更好的解决方案
id amount
1 100
2 -10
3 50
4 -80
5 20
6 -20
positive negative
170 -110
我的解决方案:
create table #temp (id int, amount int)
insert into #temp values (1, 100)
insert into #temp values (2, -10)
insert into #temp values (3, 50)
insert into #temp values (4, -80)
insert into #temp values (5, 20)
insert into #temp values (6, -20)
with positive as
(select sum(amount) as posNum from temp where amount > 0)
, negative as
(select sum(amount) as negNum from temp where amount < 0)
select *, (select * from negative) from positive
解决方案
使用条件聚合:https ://dbfiddle.uk/?rdbms=sqlserver_2017&fiddle=e2fa9cc6aee27cc501c9cda98bc2cf2d
SELECT
SUM(CASE WHEN amount > 0 THEN amount END) AS positive,
SUM(CASE WHEN amount < 0 THEN amount END) AS negative
FROM #temp;
输出:
positive negetive
170 -110
推荐阅读
- watson-text-to-speech - 我可以在视频中使用 Watson Text to Speech 吗?
- reactjs - 如果请求的来源不正确,我如何拒绝提供 index.html?
- c# - 找到一个 TMP_InputField,然后从中获取文本
- swift - Swift:SwiftUI 视图的多个条件的内联评估
- python-3.x - 如何在控制台 python3 上动态更改变量
- java - 如何在控制器层Spring进行流式传输
- mysql - 通过主查询计算连接子查询
- wordpress - file_exists(get_template_directory() - 怎么了?
- javascript - 编译或混淆节点js
- postgresql - 如何使用 TypeORM 中的返回值进行更新?