Ich habe eine Tabelle in MS-Zugang mit 2 Feldern (Gehaltsabrechnung und Abwesenheitsgrund). Es gibt einen Datensatz pro Abwesenheitsinstanz.Erhalten maximale Anzahl von jeder Gruppe
Ich versuche, eine SQL-Abfrage zu schreiben, um den häufigsten Abwesenheitsgrund für jede Person zurückzugeben. Ich bin mir sicher, dass es einen einfachen Weg dafür gibt, aber ich kann es nicht ganz verstehen. Ich habe versucht, die folgende Abfrage zu schreiben:
SELECT payroll, reason, max(count)
FROM
(
SELECT payroll, reason, count(reason) as count
FROM table1
GROUP BY payroll, reason
)
GROUP BY payroll, reason
aber dies gibt jeden Grund für jede Person zurück. Wenn ich den Grund aus der GROUP BY-Klausel entferne, funktioniert es nicht, da ich den Grund im Auswahlteil nicht zusammengefasst habe. Kann jemand darauf hinweisen, wo ich falsch liege?
Dank
Dies funktioniert gut danke! Ich musste nur den ersten Alias in t1 ändern. – Leroy
Weißt du, wie ich das optimieren könnte, so dass, wenn jemand mehr als einen Hauptgrund hat (zB 1 von jedem), er den letzten zurückgibt (es gibt ein favourtDate Feld in der Tabelle)? Danke – Leroy
Es ist in Ordnung. Ich hab es geschafft. Ich habe absenceDate in die GROUP BY-Klausel der Unterabfrage aufgenommen und dann in die ORDER BY-Klausel anstelle von reason eingefügt. – Leroy