sql >> Database >  >> RDS >> PostgreSQL

Hoe rijen in te vullen op basis van gebeurtenistypegegevens

Ervan uitgaande dat:

  • u gebruikt Postgres

  • een bepaalde klant heeft altijd precies twee rijen in de tabel

  • hour is van een datum-achtig datatype

Dan is een optie om generate_series() . te gebruiken met een laterale verbinding, zoals zo:

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

Demo op 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. PGEast, Hardware Benchmarking en de PG Performance Farm

  2. Installeer RPostgreSQL op RHEL 6.5 libpq-fe.h Fout

  3. php exec() - mysqldump maakt een leeg bestand aan

  4. mysqldump met databaselijn maken