Пример предложения WITH

Используя предложение WITH, напишите запрос для отображения названий отделов и совокупного оклада для отделов, совокупный оклад в которых больше среднего оклада по отделам.

Задача, демонстрируемая на рисунке, потребует следующих промежуточных вычислений:

  1. Расчет совокупного оклада для каждого отдела и сохранение результата с помощью предложения WITH.
  2. Расчет среднего оклада по отделам и сохранение результата с помощью предложения WITH.
  3. Сравнение совокупного оклада, рассчитанного на первом шаге, со средним окладом, рассчитанным на втором шаге. Если совокупный оклад для конкретного отдела больше среднего оклада по отделам, тогда название этого отдела и совокупный оклад для этого отдела выводятся на экран.

Решение этой задачи показано на следующей странице.

Программный код SQL, показанный на рисунке, представляет собой пример ситуации, в которой скорость выполнения и написания SQL можно повысить более простым путем с помощью предложения WITH. Запросом создаются имена запросов DEPT_COSTS и AVG_COST, а затем они вставляются в тело главного запроса. Внутри запроса предложение WITH раскладывается как встроенное представление или временная таблица.

Оптимизатором выбирается подходящее решение в зависимости от достоинств или недостатков временного хранения результатов предложения WITH.

Программным кодом SQL, показанным на рисунке, генерируются следующие выходные данные:

Примечания к использованию предложения WITH

  1. Используется только с инструкциями SELECT.
  2. Имя запроса отображается для всех блоков запроса элемента WITH (включая блоки их подзапросов), определенных после него и самого блока главного запроса (включая блоки его подзапросов).
  3. Когда имя запроса совпадает с именем существующей таблицы, синтаксический анализатор производит поиск изнутри наружу, а имя блока запроса имеет приоритет над именем таблицы.
  4. Предложение WITH может содержать более одного запроса. В этом случае каждый запрос отделяется запятой.

Далее: Примеры регулярных выражений и проверочных ограничений

Похожие записи