diff --git a/resources/sql/possstgre.sql b/resources/sql/possstgre.sql new file mode 100644 index 0000000..8cbd183 --- /dev/null +++ b/resources/sql/possstgre.sql @@ -0,0 +1,45 @@ +-- # 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")); \ No newline at end of file