每周汇总数据

时间:2017-02-16 14:37:12

标签: postgresql

我希望每周根据日期和值汇总数据。

我有一张这样的表:

create table test (t_val integer, t_date date);

insert into test values(1,'2017-02-09'),(2,'2017-02-10'),(4,'2017-02-16');

这是查询:

WITH date_range AS (
   SELECT   MIN(t_date) as start_date,
            MAX(t_date) as end_date
   FROM test
)
SELECT
    date_part('year', f.date) as date_year,
    date_part('week', f.date) as date_week,
    f.val
FROM    generate_series( (SELECT start_date FROM date_range), (SELECT end_date FROM date_range), '7 day')d
 LEFT JOIN
(
    SELECT  t_val as val, t_date as date
    FROM    test
    WHERE   t_date >= (SELECT start_date FROM date_range)
        AND t_date <= (SELECT end_date FROM date_range)
    GROUP BY    t_val, t_date
) f
ON  f.date BETWEEN d.date AND (d.date + interval '7 day')
GROUP BY date_part('year', f.date),date_part('week', f.date), f.val;

我期待这样的结果:

| Year | Week | Val |
| 2017 |  6   |  3  |
| 2017 |  7   |  4  |

BUt查询返回:

| Year | Week | Val |
| 2017 |  6   |  1  |
| 2017 |  6   |  2  |
| 2017 |  7   |  4  |

缺少什么?

0 个答案:

没有答案