From 78b34514f9a68ffba826d8053ff3c470d17acb7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torsten=20L=C3=BCcke?= Date: Wed, 24 Mar 2021 16:29:08 +0100 Subject: [PATCH] Definition der Daten-Tabellen und Ansichten. --- resources/sql/possstgre.sql | 45 +++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 resources/sql/possstgre.sql 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