loading..
Русский    English
11:28
листать

Предложение HAVING

Пусть требуется найти красные квадраты, т.е. квадраты, окрашенные только баллонами с красной краской и суммарным количеством краски, равным 255. Речь идёт о базе данных "Окраска".

Эту задачу можно решить разными способами. Здесь мы приведём решение с использованием оператора CASE в предложении HAVING.

Идея состоит в следующем. Выполняя группировку по идентификатору квадрата, будем суммировать объем краски. При этом краску красного цвета будем добавлять со знаком "+", а остальную - со знаком "-". Поскольку краски каждого цвета на квадрате не может быть больше 255 единиц, то результат, равный в точности 255 говорит о том, что вся эта краска была красного цвета, и никакой другой использовано не было.

А вот и само решение:

Консоль
Выполнить
  1. SELECT b_q_id
  2. FROM utb JOIN utv ON v_id=b_v_id
  3. GROUP BY b_q_id
  4. HAVING SUM(CASE WHEN v_color='R' THEN b_vol ELSE -b_vol END) = 255;

Bookmark and Share
Тэги:
ALL AND AUTO_INCREMENT AVG battles CASE CAST CHAR CHARINDEX CHECK classes COALESCE CONSTRAINT Convert COUNT CROSS APPLY CTE DATEADD DATEDIFF DATENAME DATEPART DATETIME DDL DEFAULT DELETE DISTINCT DML EXCEPT EXISTS EXTRACT FOREIGN KEY FROM FULL JOIN GROUP BY Guadalcanal HAVING IDENTITY IN INFORMATION_SCHEMA INNER JOIN insert INTERSECT IS NOT NULL IS NULL ISNULL laptop LEFT LEFT OUTER JOIN LEN maker Больше тэгов
Учебник обновлялся
месяц назад
©SQL-EX,2008 [Развитие] [Связь] [О проекте] [Ссылки] [Team]
Перепечатка материалов сайта возможна только с разрешения автора.