Страницы

Поиск по вопросам

четверг, 13 февраля 2020 г.

Зачем тут нужен подзапрос?

#sql


SELECT * FROM Customers WHERE rating = (SELECT MAX(rating) FROM Customers);

Я думал, раз мы ищем из этой таблицы максимальное значение, то можно просто 
rating = MAX(rating)
    


Ответы

Ответ 1



Мы ищем не просто "максимальное значение", а все записи с максимальным рейтингом. Для этого нам нужно получить значение этого самого максимального рейтинга. И выбрать все записи, у которых рейтинг совпадает с максимальным. Что касается "просто rating=MAX(rating)" - а какую группировку используем для агрегации? Что нужно - записи с максимальным рейтингом среди всех клиентов или с максимальным рейтингом среди клиентов одного региона? И так далее, и тому подобное. Использование агригирующих функций в одном запросе с другими полями требует описания группировки. Поэтому такие вещи выносятся в подзапрос.

Комментариев нет:

Отправить комментарий