Difference between pages "AVG/de" and "CASE/de"

From SQLZOO
< AVG(Difference between pages)
Jump to: navigation, search
 
 
Line 2: Line 2:
 
<table align='right' border='1'>
 
<table align='right' border='1'>
 
<caption>Kompatibilität</caption>
 
<caption>Kompatibilität</caption>
<tr><th colspan='3'>AVG(f)</th></tr>
+
<tr><th colspan='3'>CASE WHEN b1 THEN v1 END</th></tr>
 
<tr><td align='center'>'''DBMS'''</td><td align='center'>'''OK'''</td><td align='center'>'''Alternative'''</td></tr>
 
<tr><td align='center'>'''DBMS'''</td><td align='center'>'''OK'''</td><td align='center'>'''Alternative'''</td></tr>
 
<tr><td align='left'>Ingres</td><td>Ja</td><td></td></tr>
 
<tr><td align='left'>Ingres</td><td>Ja</td><td></td></tr>
Line 11: Line 11:
 
</table>
 
</table>
  
<h1>AVG</h1>
+
<h1>CASE</h1>
<p>AVG ermitteln den Mittelwert bzw. Durchschnitt (arithmetisches Mittel) über die Werte einer Spalte bzw. die Werte einer Spalte über eine Gruppe von Zeilen.</p>
+
<p>CASE gestattet die Rückgabe unterschiedlicher Werte, abhängig von den festgelegten Bedingungen.</p>
<p>AVG ist eine Aggregatfunktion und wird gewöhnlich mit der Klausel GROUP BY verwendet.</p>
+
<p>Falls keine Bedingung zutrifft und auch kein ELSE angegeben wurde, wird NULL zurückgeliefert.</p>  
<p>Der Mittelwert der Werte 2, 5, 5 beträgt (2+5+5)/3 = 12/3 = 4. Die Summe der Einzelwerte wird durch 3 geteilt, da es 3 Einzelwerte im Beispiel gibt.</p>
+
<pre style='width:50ex'>
<p>NULL-Werte werden nicht mitgezählt.</p>
+
  CASE WHEN condition1 THEN value1
<pre style='width:60ex'>
+
      WHEN condition2 THEN value2 
  SELECT region, AVG(population)
+
      ELSE def_value
  FROM bbc
+
  END
  GROUP BY region
+
 
</pre>
 
</pre>
  
<div class='qu'>
+
<div class='qu'>
Mit der Klausel <code>GROUP BY region</code> wird für jede Region nur ein einziges Ergebnis berechnet.
+
Die AVG-Funktion ermittelt die durchschnittliche Einwohnerzahl (eines Landes) für jede Region.   
+
 
<source lang='sql' class='def'>
 
<source lang='sql' class='def'>
SELECT region, AVG(population)
+
SELECT name, population,
 +
      CASE WHEN population < 1000000
 +
            THEN 'klein'
 +
            WHEN population < 10000000
 +
            THEN 'mittel'
 +
            ELSE 'groß'
 +
      END
 
   FROM bbc
 
   FROM bbc
GROUP BY region
 
 
</source>
 
</source>
 
</div>
 
</div>
Line 34: Line 36:
 
<p>Siehe auch</p>
 
<p>Siehe auch</p>
 
<ul>
 
<ul>
   <li>[[MAX/de | Funktion MAX]]</li>
+
   <li>[[NVL/de | Funktion NVL]]</li>
  <li>[[COUNT/de | Funktion COUNT]]</li>
+
  <li>[[MIN/de | Funktion MIN]]</li>
+
 
</ul>
 
</ul>
  
 
{{Languages}}
 
{{Languages}}

Revision as of 17:08, 21 October 2012

Kompatibilität
CASE WHEN b1 THEN v1 END
DBMSOKAlternative
IngresJa
MySQLJa
OracleJa
PostgreSQLJa
SQL ServerJa

CASE

CASE gestattet die Rückgabe unterschiedlicher Werte, abhängig von den festgelegten Bedingungen.

Falls keine Bedingung zutrifft und auch kein ELSE angegeben wurde, wird NULL zurückgeliefert.

  CASE WHEN condition1 THEN value1 
       WHEN condition2 THEN value2  
       ELSE def_value 
  END 
SELECT name, population,
       CASE WHEN population < 1000000 
            THEN 'klein'
            WHEN population < 10000000 
            THEN 'mittel'
            ELSE 'groß'
       END
  FROM bbc

Siehe auch

Sprache: English  • Deutsch
Personal tools
Namespaces

Variants
Actions
Reference
Toolbox
Google AdSense