1. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

DB Abfrage, Summe bilden über mehrere Spalten

Dieses Thema im Forum "Oracle" wurde erstellt von catosan, 11 März 2020.

  1. catosan

    catosan Neuer Benutzer

    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
     
  2. akretschmer

    akretschmer Datenbank-Guru

    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.
     
  3. catosan

    catosan Neuer Benutzer

    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
     
  4. catosan

    catosan Neuer Benutzer

    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
     
  5. akretschmer

    akretschmer Datenbank-Guru

    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)
    
    
     
  6. catosan

    catosan Neuer Benutzer

Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden