简体   繁体   English

Postgres复杂的SQL查询

[英]Postgres complicated sql query

Have a bit of a complicated query I am trying to work out. 我正在尝试解决一个复杂的查询。 And I'm not really sure how to query google on it to get some help... 而且我不太确定如何查询google以获得帮助...

I have a table something like this: 我有一张桌子,像这样:

 Date      | period | meter   | value
2017-01-01 |    1   | meter01 | 1.12
2017-01-01 |    2   | meter01 | 2.12
.
.
2017-01-01 |    1   | meter02 | 0.12
2017-01-01 |    2   | meter02 | 7.12
.
.
2017-01-02 |    1   | meter01 | 2.12
2017-01-02 |    2   | meter01 | 4.12
.
.

There are 48 periods for any given date. 任何给定日期都有48个期间。 There could be hundreds of meters for any given date also. 对于任何给定的日期,可能还有数百米。

I wish to return a result that looks something like this: 我希望返回的结果看起来像这样:

 Date       |  Meter    |  Period 1 | Period 2 | Period 3 | Period 4
2017-01-01  |  meter01  |    1.24   |   2.12      
2017-01-01  |  meter02  |    2.24   |   3.12 

The result would give me the totals for each meter, date and period where the period columns are the sum of all readings for the given meter, period and date. 结果将为我提供每个仪表,日期和周期的总计,其中周期列是给定仪表,周期和日期的所有读数的总和。

One method is conditional aggregation: 一种方法是条件聚合:

select date, meter,
       sum(case when period = 1 then value end) as period_01,
       sum(case when period = 2 then value end) as period_02,
       sum(case when period = 3 then value end) as period_03,
       sum(case when period = 4 then value end) as period_04
from t
group by date, meter
order by date, meter;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM