2017-03-14 3 views
0

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.

+0

'challenges_created' ist ein Spaltenalias,' HAVING' kann diese nicht erkennen. –

+0

Also, was ist der beste Weg, um die Bedingungen für Aggregatspalten zu überprüfen –

+0

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. –

Antwort

1
Line 9 The multi-part identifier "Challeneges.challenge_id" could not be bound. 

Sieht aus wie Sie Challenges falsch geschrieben.

+0

danke für die Antwort Ich habe gerade den Code bearbeitet und bekam den folgenden Fehler Msg 207, Level 16, State 1 , Server WIN-ILO9GLLB9J0, Zeile 12 Ungültiger Spaltenname 'challenges_created'. Nachricht 207, Ebene 16, Status 1, Server WIN-ILO9GLLB9J0, Zeile 12 Ungültiger Spaltenname 'challenges_created'. –