![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 15.05.2010
Сообщений: 14
|
![]()
Что делают этот код? Точнее, не понятно, как работает HAVING..
SELECT type, AVG(price) FROM titles GROUP BY type HAVING AVG(price) < (SELECT AVG(price) FROM titles); |
![]() |
![]() |
![]() |
#2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
Этот код сгруппирует по значению поля type, после чего вычислит AVG(price) а потом посмотрит меньше ли это вычисленное чем (SELECT AVG(price) FROM titles); Если да то вернет в набор, если нет то отбросит
HAVING в отличие от Where это условие для уже сгруппированных подсчетов, а не для каждой записи
I'm learning to live...
|
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 15.05.2010
Сообщений: 14
|
![]()
Спасибо! Не поможешь ещё с таким кодом:
SELECT state, COUNT(*) FROM publishers p WHERE EXISTS (SELECT * FROM titles t WHERE p.pub_id=t.pub_id) AND $22>ALL (SELECT price FROM titles t WHERE p.pub_id=t.pub_id AND price IS NOT NULL) GROUP BY state ORDER BY state ASC; |
![]() |
![]() |