SQL Wer wie lange Mitarbeiter?
Hi zusammen,
ich versuche gerade eine Abfrage zu erstellen, in der man sehen kann wie lange die Mitarbeiter schon im Betrieb sind.
Also die ausgaben sollte am besten in etwa so aussehen:
Jahr | Anzahl Mitarbeiter
1 40
2 37
"..
Ich hatte da an sowas gedacht wie:
Eintrittsdatum : 365
Aber komme da irgendwie nicht weiter :/
Hier die ersten Zeilen der Tabelle (ist nur eine kleine Übungstabelle)
Theoretisch müsste ja stand heute das Ergebnis dann wie folgt sein:
Jahr | Anzahl der Mitarbeiter
1 | 2
2 | 1
3 | 0
4 | 1
3 Antworten
Es gibt die Funktion Year() mit der du das Jahr aus einem Datum extrahieren kannst:
Select count (*), Year (Eintrittsdatum) from Tabelle
Group by Year (Eintrittsdatum)
Aber da bekomme ich dann nur raus, wer im Jahr 2021 oder 2020 eingetreten ist. Ich möchte ja stand heute 1,2,3,4 Jahre zurück gehen. Also würde beispielsweise das erste Jahr von 19.11.2021 bis 19.11.2020 gehen. Ich hoffe du verstehst was ich meine
SELECT FLOOR(DATEDIFF(NOW(),`Eintrittsdatum`)/365.25) AS `Jahre`, COUNT(FLOOR(DATEDIFF(NOW(),`Eintrittsdatum`)/365.25)) AS `Anzahl` FROM `Mitarbeiter` WHERE 1 GROUP BY `Jahre` ORDER BY `Jahre`;
Ist durch die Teilung durch die Tage im Jahr nicht 100% exakt, aber für den Überblick denke ich OK.
Das sagt im Prinzip nichts aus. Das setzt phpMyAdmin z.B. automatisch, wenn man eine SQL Abfrage erstellt. Es bedeutet soviel wie True - die Bedingung ist also immer Wahr. So hat es den Vorteil, wenn man noch eine Bedingung einfügen möchte weiß man gleich wo die hin gehört. Kannst du also auch genau so gut weglassen. Ich habs eben nicht ausgelöscht.
Es wäre hilfreich, wenn wir die originale Tabelle mit einigen Zeilen sehen können. Dann kann man basierend darauf überlegen, wie man welche Daten anzeigt.
Das Where 1 verwirrt mich noch, worauf bezieht sich die 1?