Ich habe eine Frage wie folgt:Falsche Ausgabe in MYSQL
Die Gesamtpunktzahl eines Hackers die Summe ihrer maximalen Werte für alle Herausforderungen ist. Schreiben Sie eine Abfrage, um den
hacker_id
, den Namen und die Gesamtpunktzahl der nach absteigender Punktzahl geordneten Hacker zu drucken.
Wenn mehr als ein Hacker die gleiche Gesamtpunktzahl erreicht hat, sortieren Sie das Ergebnis aufsteigend nachhacker_id
.
Schließen Sie alle Hacker mit einer Gesamtpunktzahl von 0 von Ihrem Ergebnis aus.
Die zwei Tabellen sind wie folgt gegeben:
Tabelle: Hacker
========================================
hacker_id: Integer (ID of the hacker)
name: String (Name of the hacker)
========================================
Tabelle: Submissions
===================================================
submission_id: Integer (ID of the submission)
hacker_id: Integer (ID of the hacker)
challenge_id: Integer (ID of the challenge)
score: Integer (score of the submission)
===================================================
Die MYSQL Abfrage Ich habe wird wie folgt geschrieben: -
select
a.hacker_id,
a.name,
a.total
from(
select
h.hacker_id,
h.name,
sum(case when s.hacker_id=h.hacker_id then s.score else 0 end) as total
from
hackers h,
submissions s
group by
h.hacker_id,
h.name
) as a
where
a.total>0
order by
a.total desc,
a.hacker_id asc;
ich für diese falschen Ausgang bin immer aber, dass Ausgabe erfüllt alle Regeln der Ordnung & ommission von 0 scorers nach Bedarf. Ich bin sehr verwirrt, was der Fehler ist. Jemand bitte helfen !!!
Zunächst einmal die richtige Verbindung verwenden. Sie benötigen kein kartesisches Produkt der beiden Tabellen. – Eric