Ik zit met een probleem, ik heb een vrij complexe query met verschillende unions etc, maar volgens mij is het probleem vrij simpel. Laten we wat data nemen:
Ik wil nu per record berekenen hoeveel nachten men daar verblijft:
Ik heb gisteren window-functions ontdekt en dacht dat dit wellicht zou helpen bij de uitkomst. Maar ik heb nog wat problemen bij het praktisch toepassen van deze window-functions, hoewel ik er al wel een praktische toepassing voor had gevonden.
Een group is niet echt een optie, omdat per regel nog wat gegevens variëren waardoor een group niet echt een optie is (met een subquery zou het waarschijnlijk nog wel kunnen).
Ik wil eigenlijk voorkomen om subqueries en joins te doen, omdat de query tamelijk complex is (400 regels). Verder kan ik niet zo goed de juiste terminologie verzinnen, dus graag jullie hulp.
Ik gebruik Postgresql 9.4, mocht dat helpen. Overlap op datums kan nooit voorkomen, evenals een gat tussen de data.
code:
1
2
3
4
5
6
7
8
9
10
11
| id_city | date ------------------ 1 | 2016-01-01 1 | 2016-01-02 1 | 2016-01-03 2 | 2016-01-04 2 | 2016-01-05 3 | 2016-01-06 1 | 2016-01-07 2 | 2016-01-08 2 | 2016-01-09 |
Ik wil nu per record berekenen hoeveel nachten men daar verblijft:
code:
1
2
3
4
5
6
7
8
9
10
11
| id_city | date | night_count ---------------------------- 1 | 2016-01-01 | 3 1 | 2016-01-02 | 3 1 | 2016-01-03 | 3 2 | 2016-01-04 | 2 2 | 2016-01-05 | 2 3 | 2016-01-06 | 1 1 | 2016-01-07 | 1 2 | 2016-01-08 | 2 2 | 2016-01-09 | 2 |
Ik heb gisteren window-functions ontdekt en dacht dat dit wellicht zou helpen bij de uitkomst. Maar ik heb nog wat problemen bij het praktisch toepassen van deze window-functions, hoewel ik er al wel een praktische toepassing voor had gevonden.
Een group is niet echt een optie, omdat per regel nog wat gegevens variëren waardoor een group niet echt een optie is (met een subquery zou het waarschijnlijk nog wel kunnen).
Ik wil eigenlijk voorkomen om subqueries en joins te doen, omdat de query tamelijk complex is (400 regels). Verder kan ik niet zo goed de juiste terminologie verzinnen, dus graag jullie hulp.
Ik gebruik Postgresql 9.4, mocht dat helpen. Overlap op datums kan nooit voorkomen, evenals een gat tussen de data.
[ Voor 6% gewijzigd door storeman op 03-03-2016 22:28 ]
"Chaos kan niet uit de hand lopen"