Programm_Wirl/Monatsbewertung_SQL.sql
2025-04-28 08:31:23 +02:00

48 lines
3.5 KiB
SQL

SELECT kunde.kunde_id,
kunde.tour_id,
kunde.kunde_nr,
kunde.name1,
kunde.name2,
kunde."straße",
kunde.plz,
kunde.bezeichnung,
kunde.land,
kunde.aktiv,
kunde.bettenanzahl,
kunde.kunde_gruppe,
kunde.service,
kunde.region,
kunde.waescheart,
monatsumsaetze.monat,
monatsumsaetze.jahr,
monatsumsaetze.betrag as umsatz,
CASE
WHEN kunde.bettenanzahl = 0::numeric THEN 0::double precision
ELSE monatsumsaetze.betrag / kunde.bettenanzahl::double precision
END AS umsatz_pro_gast,
CASE
WHEN kunde.bettenanzahl = 0::numeric THEN 0::double precision
ELSE monatskosten.kat1 * '-1'::integer::double precision * monatsumsaetze.betrag / gesamtumsatz.umsatz / kunde.bettenanzahl::double precision
END AS var_kost_anteil,
CASE
WHEN kunde.bettenanzahl = 0::numeric THEN 0::double precision
WHEN kunde.waescheart::text = 'Miete'::text THEN (monatskosten.kat2 / bettenanzahl.mietbetten::double precision + monatskosten.kat0 / bettenanzahl.gesamtbetten::double precision) * '-1'::integer::double precision
ELSE monatskosten.kat0 / bettenanzahl.gesamtbetten::double precision * '-1'::integer::double precision
END AS fixkosten,
CASE
WHEN kunde.bettenanzahl = 0::numeric THEN 0::double precision
WHEN kunde.waescheart::text = 'Miete'::text THEN monatsumsaetze.betrag / kunde.bettenanzahl::double precision - (monatskosten.kat1 * '-1'::integer::double precision * monatsumsaetze.betrag / gesamtumsatz.umsatz / kunde.bettenanzahl::double precision + (monatskosten.kat2 / bettenanzahl.mietbetten::double precision + monatskosten.kat0 / bettenanzahl.gesamtbetten::double precision) * '-1'::integer::double precision)
ELSE monatsumsaetze.betrag / kunde.bettenanzahl::double precision - (monatskosten.kat1 * '-1'::integer::double precision * monatsumsaetze.betrag / gesamtumsatz.umsatz / kunde.bettenanzahl::double precision + monatskosten.kat0 / bettenanzahl.gesamtbetten::double precision * '-1'::integer::double precision)
END AS erfolg_pro_gast,
CASE
WHEN kunde.bettenanzahl = 0::numeric THEN 0::double precision
WHEN kunde.waescheart::text = 'Miete'::text THEN (monatsumsaetze.betrag / kunde.bettenanzahl::double precision - (monatskosten.kat1 * '-1'::integer::double precision * monatsumsaetze.betrag / gesamtumsatz.umsatz / kunde.bettenanzahl::double precision + (monatskosten.kat2 / bettenanzahl.mietbetten::double precision + monatskosten.kat0 / bettenanzahl.gesamtbetten::double precision) * '-1'::integer::double precision)) * kunde.bettenanzahl::double precision
ELSE (monatsumsaetze.betrag / kunde.bettenanzahl::double precision - (monatskosten.kat1 * '-1'::integer::double precision * monatsumsaetze.betrag / gesamtumsatz.umsatz / kunde.bettenanzahl::double precision + monatskosten.kat0 / bettenanzahl.gesamtbetten::double precision * '-1'::integer::double precision)) * kunde.bettenanzahl::double precision
END AS erfolg_gesamt
FROM kundenverwaltung.kunde,
kundenverwaltung.monatsumsaetze,
kundenverwaltung.monatskosten,
kundenverwaltung.bettenanzahl,
kundenverwaltung.gesamtumsatz
WHERE gesamtumsatz.jahr = monatsumsaetze.jahr AND monatskosten.jahr = monatsumsaetze.jahr AND monatsumsaetze.kunde_id = kunde.kunde_id and gesamtumsatz.monat = monatsumsaetze.monat AND monatskosten.monat = monatsumsaetze.monat
ORDER BY kunde.kunde_id, jahresumsaetze.jahr;