Problem:
Chcesz dowiedzieć się, które wiersze przechowują największą wartość liczbową w danej kolumnie.
Przykład:
Nasza baza danych zawiera tabelę o nazwie student
z danymi w następujących kolumnach:id
, first_name
, last_name
i grade
.
id | imię | nazwisko | klasa |
---|---|---|---|
1 | Lisa | Jackson | 3 |
2 | Gary | Larry | 5 |
3 | Tomek | Michelin | 2 |
4 | Marcin | Kerka | 2 |
5 | Elia | Czarny | 5 |
6 | Maryi | Simpson | 4 |
Znajdźmy uczniów, którzy mają najwyższe oceny.
Rozwiązanie:
SELECT id, first_name, last_name, grade FROM student WHERE grade = (SELECT MAX(grade) FROM student);
Oto wynik:
id | imię | nazwisko | klasa |
---|---|---|---|
2 | Gary | Larry | 5 |
5 | Elia | Czarny | 5 |
Dyskusja:
Aby znaleźć maksymalną wartość kolumny, użyj MAX()
funkcja zagregowana; aby znaleźć maksymalną wartość, wymagana jest nazwa kolumny lub wyrażenie. W naszym przykładzie podzapytanie zwraca najwyższą liczbę w ocenie kolumny (podzapytanie:SELECT MAX(grade) FROM student
). Główne zapytanie wyświetla identyfikator, imię i nazwisko oraz ich ocenę. Aby wyświetlić tylko wiersze z wartością maksymalną spośród wszystkich wartości w kolumnie (np. SELECT MAX(grade) FROM student
), użyj WHERE z podzapytaniem. W WHERE wpisz nazwę kolumny z wartością porównywalną do wartości zwracanej przez funkcję agregującą w podzapytaniu (w naszym przykładzie:WHERE grade = (SELECT MAX(grade) FROM student)
).