SQL- Case konstrukt?
Hey, Also ich habe folgende Tables:
Nun lautet die Aufgabe:
- Ermitteln Sie für jede Mannschaft die Heim-Punktzahl am Ende der Saison (dabei gibt ein Heimergebnis von 1 für die Heimmannschaft 3 Punkte, von 0 für beide Mannschaften 1 Punkt und von für die Heimmannschaft 0 Punkte).Geben Sie die Teamhomeid und die Punktzahl (benannt Punktzahl) aus.
WITH pz AS (SELECT t1.TeamID ,(CASE WHEN m.ResultOfTeamHome = 1 THEN 3
WHEN m.ResultOfTeamHome = 0 THEN 1
WHEN m.ResultOfTeamHome = -1 THEN 0
END
) AS Punktzahl
FROM matches m, teams t1
WHERE t1.TeamID = m.TeamHomeID)
SELECT SUM(pz.punktzahl) AS punktzahl , pz.TeamID
FROM pz
GROUP BY pz.TeamID
Dies wäre mein jetziges Ergebnis. Hier hab ich jedoch noch nicht, dass bei beiden Teams um 1 erhöht wird , wenn m.ResultOfTeamHome = 0 gilt. Gerade wird nur bei der Heimmannschaft um 1 erhöht.
Wie könnte ich das lösen.
Hier wäre noch ein Table, der die jeweilige Heimmannschaft und den Gegner und die Punkte die die Heimmannschaft bekommt beinhaltet:
SELECT t1.TeamID AS HeimTeam ,t2.name , t1.name,(CASE WHEN m.ResultOfTeamHome = 1 THEN 3
WHEN m.ResultOfTeamHome = 0 THEN 1
WHEN m.ResultOfTeamHome = -1 THEN 0
END
) AS Punktzahl
FROM matches m, teams t1, teams t2
WHERE t1.TeamID = m.TeamHomeID AND t2.teamID = m.TeamAwayID
ORDER BY t1.TeamID ASC
1 Antwort
warum case ???
du kannst doch ums mal mit excel zu sprechen einfach eine formel nehmen
C2 = 1 => 3
C2 = 0 => 1
C2 = -1 => 0
GANZZAHL((C2+1)*1,5)
oder mathematisch
floor(wert * 1.5)
oder abgerundet (wert * 1.5)