Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.05.2010, 12:31   #1
Steil
Пользователь
 
Регистрация: 15.05.2010
Сообщений: 14
По умолчанию HAVING

Что делают этот код? Точнее, не понятно, как работает HAVING..
SELECT type, AVG(price)
FROM titles
GROUP BY type
HAVING AVG(price) < (SELECT AVG(price) FROM titles);
Steil вне форума Ответить с цитированием
Старый 19.05.2010, 13:37   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Этот код сгруппирует по значению поля type, после чего вычислит AVG(price) а потом посмотрит меньше ли это вычисленное чем (SELECT AVG(price) FROM titles); Если да то вернет в набор, если нет то отбросит

HAVING в отличие от Where это условие для уже сгруппированных подсчетов, а не для каждой записи
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.05.2010, 14:40   #3
Steil
Пользователь
 
Регистрация: 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;
Steil вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц