python - SQL Query 如何减去不同 SQL 查询的结果?[Sum() 的相反减法]
问题描述
我有几个不同的 SQL 查询,我粘贴了两个查询,如下所示,我想从不同表中的这些不同 SQL 查询中计算值,我可以对所有值求和,但是减去所有值呢?如val1-val2-val3-val4
SELECT code, SUM(val)
FROM (
-- query A(table_name_a), `val1`
SELECT code,
sum(CASE WHEN remark IN ('111', '222', '333')
THEN t.value ELSE 0
END)/
sum(CASE WHEN remark IN ('444')
THEN t.value ELSE 0
END) AS val
FROM table_name_a
WHERE code IN ('%(code)s')
AND date BETWEEN '%(start_date)s' AND '%(end_date)s'
GROUP BY code, date
UNION
-- query B(table_name_b), `val2`
SELECT code,
sum(CASE WHEN remark IN ('111', '222', '333')
THEN t.value ELSE 0
END)/
sum(CASE WHEN remark IN ('444')
THEN t.value ELSE 0
END) AS val
FROM table_name_b
WHERE code IN ('%(code)s')
AND substr(regexp_replace(date,'-',''),1,8) BETWEEN '%(start_date)s' AND '%(end_date)s'
GROUP BY code, substr(regexp_replace(date,'-',''),1,8)
) res
GROUP BY CODE;
如果我'%(code)s', '%(start_date)s' and %(end_date)s'
用 '00001' , '20191001' 和 '20191030' 输入参数,我得到的结果如下
code val1
1 00001 0.00798752 -- result from query A
code val2
1 00001 0.00472937 -- result from query B
现在我想通过 0.00798752 - 0.00472937 得到结果,我有四个不同 SQL 查询的四个值,我可以只通过一个 SQL 查询减去它们吗?
解决方案
就让*-1
你要减去的值,让值变成负数,哈哈哈哈,神奇的SQL!!!!我喜欢数学和 SQL
SELECT code, SUM(val)
FROM (
-- query A(table_name_a), `val1`
SELECT code,
sum(CASE WHEN remark IN ('111', '222', '333')
THEN t.value ELSE 0
END)/
sum(CASE WHEN remark IN ('444')
THEN t.value ELSE 0
END) AS val
FROM table_name_a
WHERE code IN ('%(code)s')
AND date BETWEEN '%(start_date)s' AND '%(end_date)s'
GROUP BY code, date
UNION
-- query B(table_name_b), `val2`
SELECT code,
(sum(CASE WHEN remark IN ('111', '222', '333')
THEN t.value ELSE 0
END)/
sum(CASE WHEN remark IN ('444')
THEN t.value ELSE 0
END)) * -1 AS val -- let the value * -1
FROM table_name_b
WHERE code IN ('%(code)s')
AND substr(regexp_replace(date,'-',''),1,8) BETWEEN '%(start_date)s' AND '%(end_date)s'
GROUP BY code, substr(regexp_replace(date,'-',''),1,8)
) res
GROUP BY CODE;
推荐阅读
- python - 层dense的输入0与层不兼容:预期轴-1
- c# - 多维数组的索引超出范围
- java - 广播接收器 - 在应用程序之间发送字符串
- matlab - 8邻域元素的设计特征矩阵
- jquery - 如何在 jQuery 中添加 div 内容
- python - 将值附加到空数据框返回 NaN 值
- google-cloud-platform - 如何使用 Oauth 验证方法作为 GoogleCloud 中的常用功能
- mysql - MySQL:按字段递增列
- angular - 类型 User[] 与类型 'User' ngrx angular 没有共同的属性
- java - 如何在没有 ChromeDriver.exe 的情况下从 Selenium 远程 Web 驱动程序启动 GoogleChrome