sql >> Databáze >  >> RDS >> PostgreSQL

Jak vyplnit řádky na základě dat typu události

Za předpokladu, že:

  • používáte Postgres

  • daný zákazník má v tabulce vždy přesně dva řádky

  • hour má datový typ podobný datu

Pak jednou z možností je použít generate_series() s bočním spojením, například takto:

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

Ukázka na 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. Je v PostgreSQL XPath implementována funkce XPath sum nebo fn:sum?

  2. Osvědčené postupy pro optimalizaci stránek LAMP pro rychlost?

  3. Převod čísla na slova v aplikaci Oracle BI Publisher

  4. MySQL casting -1 vrací 18446744073709551615