【问题标题】:SQL SUM of attributes with same value and a Condition具有相同值和条件的属性的 SQL SUM
【发布时间】:2020-03-13 03:11:00
【问题描述】:

如果我有这张桌子

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 和其他子句,但似乎无法正确。

【问题讨论】:

  • 您使用的是哪个DBMS 产品? “SQL”只是一种查询语言,而不是特定数据库产品的名称。请为您正在使用的数据库产品add a tag postgresql, oracle, sql-server, db2, ...

标签: sql sql-server sum conditional-statements


【解决方案1】:

类似这样的:

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 对其进行调整。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-09
    • 1970-01-01
    • 1970-01-01
    • 2012-10-23
    • 1970-01-01
    相关资源
    最近更新 更多