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)
).