sql - 具有相同值和条件的属性的 SQL SUM
问题描述
如果我有这张桌子
MOVS (accounts, value, date, tipomov) VALUES ('12345678901', 3105.77, '2018-01-20 09:15:44', 0)
MOVS (accounts, value, date, tipomov) VALUES ('45678901234', 1897.02, '2019-11-20 09:25:44', 0)
MOVS (accounts, value, date, tipomov) VALUES ('12345678901', 22.50, '2019-03-22 07:50:44', 1)
MOVS (accounts, value, date, tipomov) VALUES ('12345678901', 1030.40, '2019-04-21 19:15:44', 1)
MOVS (accounts, value, date, tipomov) VALUES ('89012345678', 1200.55, '2019-01-20 11:15:44', 0)
MOVS (accounts, value, date, tipomov) VALUES ('45678901234', 300, '2018-12-24 08:15:44', 1)
我想确定在 2018 年 12 月,tipomov 0 的价值总和大于 tipomov 1 的账户。我尝试了 GROUP BY 和其他条款,但似乎无法正确处理。
解决方案
像这样的东西:
select sum(value)
from movs
where tipomov = 0
having sum(value) > (select sum(value)
from movs
where tipomov = 1
and date >= date '2018-12-01'
and date < date '2019-01-01')
日期范围条件是标准 SQL,但并非所有 DBMS 产品都支持,因此您可能需要将其调整为您正在使用的 DBMS。
推荐阅读
- php - 是否可以将 PHP 与 z3c.rml 一起使用?
- java - 无法覆盖 Fragment 中的 onResume() 尝试分配较弱的访问权限;是公开的
- python - 将用户设置分离到 Django 中的不同视图
- c# - 在 HTML 标签助手中注入 C# 代码
- php - 如何在 PHP 7.4 上使用 phpmailer 5.5?
- excel - 运行时错误“1004”Excel 365 VBA for Mac
- node.js - 异步/等待 SQL 插入
- java - 在Java中找到一个给定值的总和给出TLE的三元组
- ansible - Ansible when condition:仅在命令失败时运行脚本
- sql - 在 SQL Server 中将 hh:mm:ss.nnnn 格式的 varchar 转换为实际时间格式