Julia bat ihre Schüler, einige Programmieraufgaben zu stellen. 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.T-SQL-Anfragen von hackerrank
Eingabeformat
Die folgenden Tabellen enthalten Daten Herausforderung:
Hacker: Die hacker_id die ID des Hackers ist, und der Name ist der Name des Hackers. Hackers Table
Herausforderungen: Challenge_id ist die ID der Challenge und hacker_id ist die ID des Studenten, der die Challenge erstellt hat. Challenges Table
hier ist die Abfrage, die i
select H.hacker_id,H.name,T.challenges_created
from Hackers H join
(SELECT hacker_id ,
COUNT(Challeneges.challenge_id) as challenges_created
FROM Challenges
GROUP BY hacker_id
HAVING challenges_created >= max(challenges_created)
) T
on H.hacker_id=T.hacker_id
ORDER BY T.challenges_created desc, H.hacker_id asc
schrieb, aber ich bin Fehler sagen immer, dass
Msg 207, Ebene 16, Status 1, Server WIN-ILO9GLLB9J0, 12 Linie Ungültiger Spaltenname 'challenges_created'. Meldung 207, Ebene 16, Status 1, Server WIN-ILO9GLLB9J0, Zeile 12 Ungültiger Spaltenname 'challenges_created'. Msg 4104, Ebene 16, Status 1, Server WIN-ILO9GLLB9J0, Zeile 9 Die mehrteilige Kennung "Challeneges.challenge_id" konnte nicht gebunden werden.
'challenges_created' ist ein Spaltenalias,' HAVING' kann diese nicht erkennen. –
Also, was ist der beste Weg, um die Bedingungen für Aggregatspalten zu überprüfen –
Entweder wiederholen Sie die tatsächliche Spalte Wert in 'HAVING', oder' HAVING' außerhalb der Unterabfrage. Im letzteren Fall hat 'HAVING' keine Probleme mit dem Spaltennamen, da es eine tatsächliche Spalte * in der Unterabfrage wäre. –