![]() |
Задавайте вопросы, мы ответим
Вы не зашли.
Друзья, объясните, пожалуйста, почему
Отредактированно jenia0jenia (28.01.2026 17:14:18)
Неактивен
При группировке у вас будут группы, а не обычные записи. Не понятно, какое значение из группы брать для сравнения (у одного пользователя могут быть разные order_date). Если все равно, какое значение использовать (но тогда какой смысл сравнивать?), можно указать агрегат ANY_VALUE(). Если нужно отобрать записи по order_date, используйте условие в выражении WHERE, а не HAVING.
Неактивен
estic написал:
При группировке у вас будут группы, а не обычные записи. Не понятно, какое значение из группы брать для сравнения (у одного пользователя могут быть разные order_date). Если все равно, какое значение использовать (но тогда какой смысл сравнивать?), можно указать агрегат ANY_VALUE(). Если нужно отобрать записи по order_date, используйте условие в выражении WHERE, а не HAVING.
ищу клинета, совершившего только один заказ и только '2022-01-05'.
Отредактированно jenia0jenia (28.01.2026 18:40:44)
Неактивен
estic написал:
При группировке у вас будут группы
поэтому я могу использовать order_date в функции min-max , а без них не могу?
Неактивен

Да. В части HAVING без группирующих функций можно указывать только те поля, по которым идет группировка (у вас это client_id, client_name)
Кстати, зачем вы делаете группировку ещё и по client_name? client_id ведь уникально.
Условие достаточно только одно: на min или max.
Неактивен
vasya написал:
Да. В части HAVING без группирующих функций можно указывать только те поля, по которым идет группировка (у вас это client_id, client_name)
Кстати, зачем вы делаете группировку ещё и по client_name? client_id ведь уникально.
Условие достаточно только одно: на min или max.SELECT client_name
FROM orders
JOIN clients USING(client_id)
GROUP BY client_id
HAVING COUNT(*) = 1
AND MIN(order_date) = '2022-01-05';
Спасибо, стало яснее!
Неактивен

Кстати, упустил, вместо
Неактивен