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

Cách điền vào các hàng dựa trên dữ liệu loại sự kiện

Giả sử rằng:

  • bạn đang chạy Postgres

  • một khách hàng nhất định luôn có chính xác hai hàng trong bảng

  • hour thuộc loại dữ liệu giống ngày tháng

Sau đó, một tùy chọn là sử dụng generate_series() với một phép nối bên, như vậy:

select t.customer_id, x.hour
from (
    select customer_id, min(hour) min_hour, max(hour) max_hour 
    from mytable 
    group by customer_id
) t
cross join lateral generate_series(min_hour, max_hour, '1 hour') x(hour)
order by t.customer_id, x.hour

Bản trình diễn trên DB Fiddlde :

customer_id | hour               
:---------- | :------------------
X           | 2019-04-01 13:00:00
X           | 2019-04-01 14:00:00
X           | 2019-04-01 15:00:00
X           | 2019-04-01 16:00:00
X           | 2019-04-01 17:00:00
Y           | 2019-04-01 17:00:00
Y           | 2019-04-01 18:00:00
Y           | 2019-04-01 19:00:00



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cảnh báo gây phiền nhiễu cho con rối và Postgres:Phiên bản chuyển sang máy chủ postgresql ::không được dùng nữa

  2. Phương thức xác thực PostgreSQL 10 không được hỗ trợ

  3. psycopg2 register_composite từ sqlalchemy

  4. xử lý đường ray + postgres và múi giờ

  5. Truy vấn Postgres chậm một cách đáng kinh ngạc bằng cách sử dụng WHERE trên nhiều hàng liền kề