Problém:
Chcete zjistit, které řádky ukládají největší číselnou hodnotu v daném sloupci.
Příklad:
Naše databáze obsahuje tabulku s názvem student s údaji v následujících sloupcích:id , first_name , last_name a grade .
| id | first_name | last_name | třída |
|---|---|---|---|
| 1 | Lisa | Jackson | 3 |
| 2 | Gary | Larry | 5 |
| 3 | Tome | Michelin | 2 |
| 4 | Martin | Barker | 2 |
| 5 | Ellie | Černá | 5 |
| 6 | Marie | Simpson | 4 |
Pojďme najít studenty, kteří mají nejvyšší známky.
Řešení:
SELECT id, first_name, last_name, grade FROM student WHERE grade = (SELECT MAX(grade) FROM student);
Zde je výsledek:
| id | first_name | last_name | třída |
|---|---|---|---|
| 2 | Gary | Larry | 5 |
| 5 | Ellie | Černá | 5 |
Diskuse:
Chcete-li zjistit maximální hodnotu sloupce, použijte MAX() agregační funkce; k nalezení maximální hodnoty je zapotřebí název sloupce nebo výraz. V našem příkladu vrací poddotaz nejvyšší číslo ve sloupci hodnocení (poddotaz:SELECT MAX(grade) FROM student ). Hlavní dotaz zobrazuje id, jméno a příjmení a jejich hodnocení. Chcete-li zobrazit pouze řádky s maximální hodnotou ze všech hodnot ve sloupci (např. SELECT MAX(grade) FROM student ), použijte WHERE s poddotazem. Do pole WHERE vložte název sloupce s hodnotou srovnatelnou s hodnotou vrácenou agregační funkcí v dílčím dotazu (v našem příkladu:WHERE grade = (SELECT MAX(grade) FROM student) ).