DB Abfrage, Summe bilden über mehrere Spalten

catosan

Benutzer
Beiträge
7
Hallo miteinander,
ich bin ein Anfänger was SQL angeht und muss es üben für meinen Beruf.
Ich habe mir aus Youtube ein Beipiel nachgebildet und stecke gleich am Anfang der Übungen fest. Komme über diesen Schritt nicht weiter.
Die Testdatenbank enthält Mitarbeiter, deren Zeiterfassung/Arbeitszeit,... ausgewertet werden soll.
MA1, Montag, Dienstag,..., Samstag, Summe Arbeitszeit, Durchschnittl. Arbeitszeit
Ich möchte nun die Summe Arbeitszeit bilden und direkt damit die Durchschnittl. Arbeitszeit.
Zwar kenne ich die Funktion sum und avg. Doch es scheitert an der SQL Grammatik :)
select EMPLOYEE_ID, 'Mitarbeiter

sum(Monday+ Tuesday) TOTAL_HOURS, 'Genau hier scheitere ich :-(
avg(TOTAL_HOURS) AVG_HOURS

from TIMECARDS
Vielen Dank im Voraus für evtl. Starthilfe

Trung
 
Werbung:
Code:
test=*# select * from catosan ;
 id | mon | die | mit | don | fre | sa | so
----+-----+-----+-----+-----+-----+----+----
  1 |  10 |   5 |   3 |     |   5 |  2 |  4
  2 |   6 |   8 |   7 |   5 |   3 |  2 |  1
(2 rows)

test=*# select id, coalesce(mon,0)+coalesce(die,0)+coalesce(mit,0)+coalesce(don,0)+coalesce(fre,0)+coalesce(sa,0)+coalesce(so,0) from catosan ;
 id | ?column?
----+----------
  1 |       29
  2 |       32
(2 rows)


test=*#

Dein Tabellendesign ist für den Eimer, weil Du nur für 1 Woche das erfassen kannst. Besser wäre etwas wie:

Code:
test=*# create table catosan_besser(id int primary key, mitarbeiter_id int, datum date, stunden int);
CREATE TABLE

mit mitarbeiter_id dann noch als FK auf eine Mitarbeitertabelle.
 
Hallo akretschmer,

vielen Dank für die schnelle Antwort. Die Tabelle/Datenbank habe ich aus einem Beispiel entnommen. Aber leider auch nur die Dinge, womit ich ein Problem habe. Vielleicht wurde das daher was für die runde Ablage.
Ich bin ja blutiger Anfänger und will lernen.
VG

Trung
 
Hallo akretschmer,

ich habe die Summerierung verstanden. Wenn ich dann die Summe in die gleiche Tabelle am Ende rein schreiben und diese Spalte mit Summe bezeichnen will, wie muss die Abfrage heißen? Mein Versuch hat nicht geklappt.

test=*
select id,
coalesce(mon,0)+coalesce(die,0)+coalesce(mit,0)+coalesce(don,0)+coalesce(fre,0)+coalesce(sa,0)+coalesce(so,0) Summe
from catosan ;

VG

Trung
 
Code:
test=*# select id, coalesce(mon,0)+coalesce(die,0)+coalesce(mit,0)+coalesce(don,0)+coalesce(fre,0)+coalesce(sa,0)+coalesce(so,0) as "Summe" from catosan;
 id | Summe
----+-------
  1 |    29
  2 |    32
(2 rows)
 
Werbung:
Zurück
Oben