-- # Definition der Tabelle -- DROP TABLE public."Arbeitszeiten"; create table public."Arbeitszeiten" ( "Datum" date not null, "Arbeitszeit" interval(6) null, constraint "Arbeitszeiten_pkey" primary key ("Datum") ); -- # Definition der Ansichten -- ## Wöchentlich create view "Arbeitszeiten - Woche" ("Woche", "Gesamtarbeitszeit", "Arbeitstage", "Überstunden") as select to_char(date_trunc('week'::text, "Arbeitszeiten"."Datum"::timestamp with time zone), 'TMYYYY#WW'::text) as "Woche", sum("Arbeitszeiten"."Arbeitszeit") as "Gesamtarbeitszeit", count("Arbeitszeiten"."Datum") as "Arbeitstage", sum("Arbeitszeiten"."Arbeitszeit") - count("Arbeitszeiten"."Datum") ::double precision * '08:00:00'::interval as "Überstunden" from "Arbeitszeiten" group by (date_trunc('week'::text, "Arbeitszeiten"."Datum"::timestamp with time zone)) order by (date_trunc('week'::text, "Arbeitszeiten"."Datum"::timestamp with time zone)); -- ## Monatlich create view "Arbeitszeiten - Monat" ("Monat", "Gesamtarbeitszeit", "Arbeitstage", "Überstunden") as select to_char(date_trunc('month'::text, "Arbeitszeiten"."Datum"::timestamp with time zone), 'TMYYYY TMMonth'::text) as "Monat", sum("Arbeitszeiten"."Arbeitszeit") as "Gesamtarbeitszeit", count("Arbeitszeiten"."Datum") as "Arbeitstage", sum("Arbeitszeiten"."Arbeitszeit") - count("Arbeitszeiten"."Datum") ::double precision * '08:00:00'::interval as "Überstunden" from "Arbeitszeiten" group by (date_trunc('month'::text, "Arbeitszeiten"."Datum"::timestamp with time zone)) order by (date_trunc('month'::text, "Arbeitszeiten"."Datum"::timestamp with time zone)); -- ## Jährlich create view "Arbeitszeiten - Jahr"("Jahr", "Gesamtarbeitszeit", "Arbeitstage", "Überstunden") as select date_part('year'::text, "Arbeitszeiten"."Datum")::text as "Jahr", sum("Arbeitszeiten"."Arbeitszeit") as "Gesamtarbeitszeit", count("Arbeitszeiten"."Datum") as "Arbeitstage", sum("Arbeitszeiten"."Arbeitszeit") - count("Arbeitszeiten"."Datum") ::double precision * '08:00:00'::interval as "Überstunden" from "Arbeitszeiten" group by (date_part('year'::text, "Arbeitszeiten"."Datum")) order by (date_part('year'::text, "Arbeitszeiten"."Datum"));