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