PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Nhóm theo khoảng dữ liệu

WITH t AS (
   SELECT ts, (random()*100)::int AS bandwidth
   FROM   generate_series('2012-09-01', '2012-09-04', '1 minute'::interval) ts
   )

SELECT date_trunc('hour', ts) AS hour_stump
      ,(extract(minute FROM ts)::int / 15) AS min15_slot
      ,count(*) AS rows_in_timeslice               -- optional
      ,sum(bandwidth) AS sum_bandwidth
FROM   t
WHERE  ts >= '2012-09-02 00:00:00+02'::timestamptz -- user's time range
AND    ts <  '2012-09-03 00:00:00+02'::timestamptz -- careful with borders 
GROUP  BY 1, 2
ORDER  BY 1, 2;

CTE t cung cấp dữ liệu như bảng của bạn có thể chứa:một dấu thời gian ts mỗi phút với bandwidth con số. (Bạn không cần phần đó, thay vào đó bạn làm việc với bảng của mình.)

Dưới đây là một giải pháp rất tương tự cho một câu hỏi tương tự - với lời giải thích chi tiết về cách thức hoạt động của tập hợp cụ thể này:

  • date_trunc khoảng thời gian 5 phút trong PostgreSQL

Đây là một giải pháp tương tự cho một câu hỏi tương tự liên quan đến đang chạy tổng - với giải thích chi tiết và các liên kết cho các chức năng khác nhau được sử dụng:

  • PostgreSQL:số hàng đang chạy cho truy vấn 'theo phút'

Câu hỏi bổ sung trong nhận xét

WITH -- same as above ...

SELECT DISTINCT ON (1,2)
       date_trunc('hour', ts) AS hour_stump
      ,(extract(minute FROM ts)::int / 15) AS min15_slot
      ,bandwidth AS bandwith_sample_at_min15
FROM   t
WHERE  ts >= '2012-09-02 00:00:00+02'::timestamptz
AND    ts <  '2012-09-03 00:00:00+02'::timestamptz
ORDER  BY 1, 2, ts DESC;

Truy xuất một mẫu chưa được tổng hợp mỗi khoảng thời gian 15 phút - từ hàng cuối cùng có sẵn trong cửa sổ. Đây sẽ là phút thứ 15 nếu hàng không bị thiếu. Các bộ phận quan trọng được DISTINCT ONORDER BY .
Thông tin thêm về kỹ thuật được sử dụng tại đây:

  • Chọn hàng đầu tiên trong mỗi GROUP BY nhóm?


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để bật php hoạt động với postgresql?

  2. Cách liệt kê các khóa ngoại của bảng

  3. cách sử dụng kiểu dữ liệu Blob trong Postgres

  4. PostgreSQL + Hibernate + Spring tự động tạo cơ sở dữ liệu

  5. Tự tham gia đệ quy Postgresql