Ich habe eine Frage in MySQL gefunden, die ich versuche. Bitte sagen Sie mir, ob die folgende Lösung funktioniert oder gibt es eine bessere Lösung?Name der Abteilung und Anzahl der Studenten
select D.DEPT_NAME, COUNT(*)
from Departments D
left outer join STUDENTS S
on S.Dept_ID = D.Dept_ID
group by D.DEPT_NAME
order by 2 desc, 1
Students Tabelle hat folgende Felder:
Student_ID
Student_Name
Gender
Dept_ID
Abteilungen Tabelle hat folgende Felder:
Dept_ID
Dept_Name
Eine Universität verwendet 2 Datentabellen, Studenten und Abteilungen, um Daten zu speichern über seine Studenten und die mit jedem Major verbundenen Abteilungen.
eine Abfrage, die jeweiligen Abteilungsnamen und die Anzahl der Studenten majoring in jeder Abteilung für alle Abteilungen in der Tabelle Departments (auch solche ohne Studierende) zu drucken.
Sortieren Sie Ihre Ergebnisse nach absteigender Anzahl der Studenten; Wenn zwei oder mehr Abteilungen dieselbe Anzahl an Studenten haben, sortieren Sie diese Abteilungen alphabetisch nach Abteilungsnamen.
ein mögliches Problem ist das 'COUNT (*)'. Was kommt zurück, wenn die Abteilung keine Studenten hat? Ich denke, es wird 1 sein, weil es eine Zeile für diese Abteilung gibt. –
Ich hatte Recht, siehe http://sqlfiddle.com/#!15/39a8b/1/0 - 2 Abteilungen (Mathematik und Physik) ohne Schüler, Ihre Abfrage zeigt Count 1 für sie. –
@ marek.janccuska Können Sie mir bitte die SQL-Abfrage sagen, die funktioniert? – SolakiR