Schreiben Sie eine Abfrage, um die hacker_id, den Namen und die Gesamtzahl der von jedem Schüler erstellten Herausforderungen auszudrucken. Sortieren Sie Ihre Ergebnisse nach der Gesamtanzahl der Abfragen in absteigender Reihenfolge. Wenn mehr als ein Student die gleiche Anzahl von Challenges erstellt hat, dann sortiere das Ergebnis nach hacker_id. Wenn mehr als ein Student die gleiche Anzahl von Challenges erstellt hat und die Anzahl weniger als die maximale Anzahl an erstellten Challenges ist, schließen Sie diese Teilnehmer vom Ergebnis aus.Ergebnisse auf Basis von Testfällen ausschließen
hacker_id name
5077 Rose
21283 Angela
62743 Frank
88255 Patrick
96196 Lisa
Tabelle Herausforderungen:
Ich habe auch die Bilder für die jeweiligen Tabellen
Tabelle Hacker befestigt diese
challenge_id hacker_id
61654 5077
58302 21283
40587 88255
29477 5077
1220 21283
69514 21283
46561 62743
58077 62743
18483 88255
76766 21283
52382 5077
74467 21283
33625 96196
26053 88255
42665 62743
12859 62743
70094 21283
34599 88255
54680 88255
61881 5077
So weit ich getan habe
SELECT c.hacker_id, h.name, COUNT(c.challenge_id) AS challenge_count
FROM Challenges c LEFT JOIN Hackers h on c.hacker_id = h.hacker_id
GROUP by 1,c.hacker_id HAVING challenge_count >=
MAX(challenge_count) ORDER BY challenge_count DESC ,c.hacker_id DESC;
Aber nicht erwartete Ausgabe. Mein Ausgangs
ich doppelte Ergebnisse vom Ausgang wie Hacker mit der gleichen Anzahl von Herausforderungen sollten ausgeschlossen werden, ausschließen müssen.
Also .. Wer sollte hier ausgeschlossen werden? – sagi
Hacker mit der gleichen Anzahl von Herausforderungen sollten ausgeschlossen werden, wenn der Wert für die Anzahl der Aufgaben kleiner ist als der Maximalwert. Wenn zwei Hacker die gleiche Anzahl von Herausforderungen haben und es der maximale Wert ist, müssen beide Hacker mit einbezogen werden. –
@sagi Zumindest ist er konsistent :-) –