Sql 查询 Postgresql 数据库
Sql query for Postgresql database
我在 table 中有 4 列。
A <date>
B <boolean>
C <boolean>
D <numeric>
我想从数据库中按日期获取结果,其中:
如果 B 为真,则当天 D 的总和
如果 C 为真那么 D 的总和
A B C D
11/1/2014 T 50
11/1/2014 T 40
11/1/2014 T 20
12/1/2014 T 60
12/1/2014 T 70
13/1/2014 T 55
13/1/2014 T 20
14/1/2014 T 10
14/1/2014 T 18
想要的结果
A E F
11/1/2014 90 20
12/1/2014 130 0
13/1/2014 75
14/1/2014 18 10
select a,
sum(case when b then d end) as e,
sum(case when c then d end) as f
group by a;
如果您使用的是 Postgres 9.4,则可以通过使用过滤聚合来提高可读性
select a,
sum(d) filter (b) as e,
sum(d) filter (c) as f
group by a;
我在 table 中有 4 列。
A <date>
B <boolean>
C <boolean>
D <numeric>
我想从数据库中按日期获取结果,其中:
如果 B 为真,则当天 D 的总和
如果 C 为真那么 D 的总和
A B C D
11/1/2014 T 50
11/1/2014 T 40
11/1/2014 T 20
12/1/2014 T 60
12/1/2014 T 70
13/1/2014 T 55
13/1/2014 T 20
14/1/2014 T 10
14/1/2014 T 18
想要的结果
A E F
11/1/2014 90 20
12/1/2014 130 0
13/1/2014 75
14/1/2014 18 10
select a,
sum(case when b then d end) as e,
sum(case when c then d end) as f
group by a;
如果您使用的是 Postgres 9.4,则可以通过使用过滤聚合来提高可读性
select a,
sum(d) filter (b) as e,
sum(d) filter (c) as f
group by a;