Проблем:
Искате да намерите кои редове съхраняват най-голямата числова стойност в дадена колона.
Пример:
Нашата база данни има таблица с име student
с данни в следните колони:id
, first_name
, last_name
и grade
.
id | first_name | фамилно_име | клас |
---|---|---|---|
1 | Лиза | Джаксън | 3 |
2 | Гари | Лари | 5 |
3 | Том | Мишлен | 2 |
4 | Мартин | Баркър | 2 |
5 | Ели | Черно | 5 |
6 | Мери | Симпсън | 4 |
Нека намерим учениците с най-високи оценки.
Решение:
SELECT id, first_name, last_name, grade FROM student WHERE grade = (SELECT MAX(grade) FROM student);
Ето резултата:
id | first_name | фамилно_име | клас |
---|---|---|---|
2 | Гари | Лари | 5 |
5 | Ели | Черно | 5 |
Дискусия:
За да намерите максималната стойност на колона, използвайте MAX()
агрегатна функция; необходимо е име на колона или израз, за да се намери максималната стойност. В нашия пример подзаявката връща най-високото число в оценката на колоната (подзаявка:SELECT MAX(grade) FROM student
). Основната заявка показва идентификатор, име и фамилия и тяхната оценка. За показване само на редовете с максимална стойност сред всички стойности в колоната (напр. SELECT MAX(grade) FROM student
), използвайте WHERE с подзаявка. В WHERE поставете името на колоната със сравнимата стойност към стойността, върната от агрегатната функция в подзаявката (в нашия пример:WHERE grade = (SELECT MAX(grade) FROM student)
).