Giả sử bạn có (trong Postgres 9.1) một bảng như thế này:GROUP BY ngày liên tiếp giới hạn bởi khoảng trống
date | value
đó có một số lỗ hổng trong nó (tôi muốn nói: không phải mọi ngày có thể có giữa min (date) và tối đa (ngày) có hàng của nó).
Vấn đề của tôi là làm thế nào để tổng hợp dữ liệu này để từng nhóm phù hợp (không có khoảng trống) được xử lý riêng biệt, như thế này:
min_date | max_date | [some aggregate of "value" column]
Bất kỳ ý tưởng làm thế nào để làm điều đó? Tôi tin rằng nó có thể với chức năng cửa sổ nhưng sau một thời gian cố gắng với lag()
và lead()
Tôi là một chút khó khăn.
Ví dụ nếu dữ liệu là như thế này:
date | value
---------------+-------
2011-10-31 | 2
2011-11-01 | 8
2011-11-02 | 10
2012-09-13 | 1
2012-09-14 | 4
2012-09-15 | 5
2012-09-16 | 20
2012-10-30 | 10
đầu ra (cho sum
như là tổng hợp) sẽ là:
min | max | sum
-----------+------------+-------
2011-10-31 | 2011-11-02 | 20
2012-09-13 | 2012-09-16 | 30
2012-10-30 | 2012-10-30 | 10
Dữ liệu bài viết và kết quả mong muốn –
Clodoaldo, cảm ơn bạn đã quan tâm. ví dụ: nếu dữ liệu như sau: ngày \t | giá trị --------------- + ------- 2011-10-31 | 2 2011-11-01 | 8 2011-11-02 | 10 2012-09-13 | 1 2012-09-14 | 4 2012-09-15 | 5 2012-09-16 | 20 2012-10-30 | 10 đầu ra (cho "tổng" là tổng hợp) sẽ là: phút | tối đa | tổng số ----------- + ------------ + ------- 2011-10-31 | 2011-11-02 | 20 2012-09-13 | 2012-09-16 | 30 2012-10-30 | 2012-10-30 | 10 –
Từ bạn đang tìm kiếm là * liên tiếp *. Xem [câu trả lời này] (http://stackoverflow.com/a/8015107/398670). –