Bitte um Hilfe zur Datenbankabfrage SQL

SolidBadBoy

PCGHX-HWbot-Member (m/w)
Hallo liebe Community,

ich bin total überfrodert mit der Aufgabe!-.-

Die Aufgabe:

Wie viel verdienen unsere Angestellten im Durchschnitt? Lassen Sie außerdem die Anzahl der Mitarbeiter und unsere Gesamtlohn ausgaben anzeigen! Beschriften Sie die Spalten sinvoll.

Es sind mehrere Tabellen davon sind für uns wichtig Tabelle Personal(PersonalNr, Name, Vorname, TätigkeitsNr, Abteilung, Gehalt, Eintrittsdatum) und Tätigkeiten (TätigkeitsNr, Beschreibung, Gehaltsbonus)

Also ich weis aufjedenfall mal das ich das AS, AVG und COUNT brauch um das ganze Abzufragen! Zudem muss ich ja mit INNER JOIN die beiden Tabelen für die Gesamtlohnausgaben zusammensetzen!

Ich bin total damit überfordet und weis nicht womit ich anfangen soll :(
am liebsten würde ich jede abfrage einzeln durchführen!
Noch ne frage hab ich dazu: Darf in einer Abfrage mehrmal ein SELECT vorkommen, weil sonst könnt ichs lösen :D :P

Ich fag mal an aber ich weis nicht obs richtig ist :)

SELECT COUNT (*) oder....
SELECT Personal.PersonalNr, Personal.Gehalt, Tätigkeiten.Gehaltsbonus

einerseits müssen diese COUNT Befehle doch oben stehen einerseits muss ich die Tabellen nennen ich hab den durchblick verloren :(

Ich bin schon damit überfordet weil ich jetzt nicht genau weis ob ich erstmal alle benötigten Tabellen mit den zu gebrauchenden Feldern nennen soll oder gleich mit den Befehlen -.- HILFE!!!

Ich wäre euch sehr dankbar über antworten und Lösungen!!!

MfG
SolidBadBoy
 
Vielleicht wird's noch benötigt, vielleicht auch nicht... :)

Code:
SELECT
PersonalNr,
Mitarbeiteranzahl,
Name,
Vorname,
TätigkeitsNr,
Beschreibung,
Gehaltsbonus,
Abteilung,
SUM(Gehalt) AS Gesamtgehalt,
Durchschnittsgehalt,
Eintrittsdatum
FROM
(
    SELECT
      PersonalNr, 
      Name, 
      Vorname, 
      TätigkeitsNr, 
      Abteilung, 
      Gehalt, 
      Eintrittsdatum
    FROM PERSONAL 
    ) a
    
    LEFT JOIN
    (
    SELECT
      TätigkeitsNr, 
      Beschreibung, 
      Gehaltsbonus
    FROM TÄTIGKEITEN
    ) b
    ON a.TätigkeitsNr = b.TätigkeitsNr
    
    LEFT JOIN
    (
    SELECT
      PersonalNr, 
      COUNT(PersonalNr) AS Mitarbeiteranzahl,
      Name, 
      Vorname, 
      TätigkeitsNr, 
      Abteilung, 
      AVG(Gehalt) AS Durchschnittsgehalt, 
      Eintrittsdatum
    FROM PERSONAL
    GROUP BY PersonalNr, Name, Vorname, TätigkeitsNr, Abteilung, Eintrittsdatum
    ) c
    ON c.TätigkeitsNr = a.TätigkeitsNr
    
)
GROUP BY PersonalNr, Mitarbeiteranzahl, Name, Vorname, TätigkeitsNr, Beschreibung, Gehaltsbonus, Abteilung, Gesamtgehalt, Durchschnittsgehalt, Eintrittsdatum
 
hey ich bin dir sehr dankbar dafür! ;)
die aufgabe haben wir in der schule aber anders gelernt, nähmlich das wir nur einmal SELECT schreiben und dann alles weiter mit den anderen Befehlen weiter einschränken auf unsere Abfrage.

Ich weis nicht ob das was du mir da geschrieben hast richtig o. falsch ist oder ob es noch andere Formen dazu gibt die Abfrage/Aufgabe zu lösen? :)


Dankend
Solid
 
Select Count(P.PersonalNr), AVG(P.Gehalt + T.Gehaltsbonus) from Personal P, Tätigkeit T where P.TätigkeitsNr = T.TätigkeitsNr;

Die Beschriftung der Spalten bekommst Du sicher selbst hin. So oder so ähnlich sollte die Lösung aussehen. Verzeih mir Fehler, ist bei mir sind Datenbanken schon etwas länger her..
 
Zuletzt bearbeitet:
hey danke also ich hab jetzt beide vorschläge nicht ausgeführt um zu prüfen ob sie auch funktionieren wir haben die KA letzte woche geschrieben ich warte jetzt mal aufs ergebnis ;)

und danke vielmals an euch beide! :daumen:
 
Zurück