LoslegenKostenlos loslegen

Mit CASE und AVG Brüche berechnen

CASE-Anweisungen geben den Wert zurück, den du in deiner THEN-Klausel angibst. Dies ist ein unglaublich leistungsfähiges Werkzeug für zuverlässige Berechnungen und Datenmanipulationen, wenn es in Verbindung mit einer Aggregatanweisung verwendet wird. Eine wichtige Aufgabe, die du erledigen kannst, ist die Verwendung von „ CASE “ innerhalb einer „ AVG “-Funktion, um einen Bruchteil der Infos in deiner Datenbank zu berechnen.

Hier ist ein Beispiel dafür, wie du das machst:

AVG(CASE WHEN condition_is_met THEN 1

         WHEN condition_is_not_met THEN 0 END)

Bei diesem Ansatz ist es wichtig, dass du genau angibst, welche Datensätze als 0 zählen, sonst sind deine Berechnungen möglicherweise nicht korrekt!

Deine Aufgabe ist es, die Anzahl der Siege, Niederlagen und Unentschieden in jedem Land zu bestimmen. Die Tabelle matches ist so gefiltert, dass sie alle Spiele aus den Spielzeiten 2013/2014 und 2014/2015 enthält.

Diese Übung ist Teil des Kurses

Datenbearbeitung in SQL

Kurs anzeigen

Anleitung zur Übung

  • Schreib in der Funktion „ AVG() ” die Anweisung „ CASE ” fertig, indem du prüfst, ob „ m.home_goal ” nicht gleich „ m.away_goal ” ist, und wenn das stimmt, setz den Wert auf „ 0 ”.
  • Mach das noch mal, um die Heim- und Auswärtstore in „ '2014/2015' ” zu vergleichen, auch bekannt als „ ties_2014_2015 ”.

Interaktive Übung

Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.

SELECT 
	c.name AS country,
    -- Calculate the fraction of tied games in each season
	___(___ ___ m.season='2013/2014' AND m.home_goal = m.away_goal THEN 1
			WHEN m.season='2013/2014' AND m.home_goal ___ m.away_goal THEN ___
			END) AS ties_2013_2014,
	___(___ ___ m.season='2014/2015' ___ ___ = ___ ___ ___
			WHEN m.season='2014/2015' ___ m.home_goal != m.away_goal THEN ___
			___) AS ___
FROM country AS c
LEFT JOIN matches AS m
ON c.id = m.country_id
GROUP BY country;
Code bearbeiten und ausführen