Ik ben opzoek naar een manier om de gemiddelde bezetting van een hotel te berekenen in SQL (Liefst Oracle compatible maar anders is MySQL ook goed, dus zonder tussenkomst van PHP of een andere taal!). Nu is het geval dat er kamers bij kunnen komen (bijv door de bijbouw van een nieuw gebouw o.i.d.) Dus er moet eigenlijk per dag gekeken worden wat de bezetting is om aan de hand hiervan een gemiddelde per maand uit te kunnen rekenen.

De desbetreffende tabellen zien er ongeveer als volgt uit:
Kamers: Kamernr, <kamertype>, date_opened, date_closed
Boekingen: Boekingnr, <kamernr>, vanaf_datum, tot_datum
(Bold geeft Primary key, <> geven een foreign key aan)

De meest logische manier lijkt mij om eerst een view te creeeren welke de beschikbaarheid en de bezetting per dag weergeeft. Echter kan ik me niet bedenken hoe ik een view creeer welke per dag een gemiddelde geeft.

Wie heeft er een mooie voorbeeldje voor me?
Ik snap dat je rekening houdt met nieuwe gebouwen.. Maar er komt toch niet elke dag 1 bij ofzo? Kan je het dan niet aanpassen op het moment dat er gebouwd wordt?
Maar als ik nou eens rapportages van verschillende jaren wil vergelijken zouden deze niet meer kloppen ;) Als er meer kamers bijkomen zou de bezettingsgraad dalen over de eerdere jaren.

En uiteindelijk wordt de query ook wel stukje ingewikkelder.. in het voorbeeldje gaat het om kamers van 1 hotel, maar uiteindelijk gaat het over meerdere hotels. Echter is dat niet iets om hier in te verwerken aangezien ik denk dat ik daar wel uit ga komen ;)
Hoe wil je uberhaupt ouput krijgen zonder hulp van een programmeertaal? Buiten dat, een database is keurig in staat alles zelf te berekenen, het is gewoon een kwestie van goede queries opstellen. Als je Oracle of PGSQL gebruikt kun ook in andere talen (C++, C, PERL) functies schrijven voor de database.
Jurgen: Oracle heeft een perfecte command line tool ;)
En als ik een query heb kan ik deze in een VIEW gieten...

En ik ben dus opzoek naar die juiste query's om op te stellen.
maar je wilt dus berekenen hoeveel procent van het totaal aantal kamers er ook daadwerkelijk geboekt zijn.
Mjah, het percentage zou hier een proces gegeven zijn van 'kamers geboekt' delen door 'kamers beschikbaar'. Dat percentage berekenen is eitje :P

Waar het mij om gaat is om het aantal geboekte en beschikbare kamers te bereken op elke dag van de maand.

Dagen waarop er geen check-in of check-out plaatsvindt hebben nog wel een bezetting ;) Deze bezetting dient ook meegenomen te worden in de berekening.
Stel dat er 5 van de 10 kamers verhuurd zijn... allen van 21-12-05 tot 31-23-05. Dan wil ik ook voor 22-12-05 zien dat er 5 kamers zijn geboekt.
De desbetreffende tabellen zien er ongeveer als volgt uit:
Kamers: Kamernr, <kamertype>, date_opened, date_closed
Boekingen: Boekingnr, <kamernr>, vanaf_datum, tot_datum
(Bold geeft Primary key, <> geven een foreign key aan)


Kan je niet een AVG maken direct zonder die view te maken, subquery's e.d. zijn ook gewoon toegestaan.
Nee, want dan moet ik eerst per dag het aantal geboekte kamers weten.

Ik ga morgen op me werk wel ff de documentatie induiken over procedures en while loopjes in Oracle. Dat is voor mij nog nieuw terrein, maar mogelijk wel de oplossing :)
Sickness schreef op 12.10.2008 20:25
Jurgen: Oracle heeft een perfecte command line tool ;)
En als ik een query heb kan ik deze in een VIEW gieten...

En ik ben dus opzoek naar die juiste query's om op te stellen.


Dat weet ik, maar dit ga je toch niet aan je gebruikers tonen d.m.v. commandline mag ik hopen?
Wie weet, maar als ik nou eens verschillende applicaties wil laten draaien op die ene database ;) Dan moet ik elke keer (voor elke taal iig) opnieuw de afhandeling gaan schrijven? :s

Dit is een onderdeeltje van een project voor school, de applicatie hoeft ik alleen te bouwen mits daar tijd voor is. En alhoewel school waarschijnlijk ook wel akkoord gaat met een halfbakken query is dat niet wat ik in wil leveren.

Reageren