Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Использование подзапросов, возвращающих единичное значение




Пример 7.1. Определить дату продажи максимальной партии товара.

SELECT Дата, КоличествоFROM СделкаWHERE Количество=(SELECT Max(Количество) FROM Сделка)

Пример 7.1. Определение даты продажи максимальной партии товара. (html, txt)

Во вложенном подзапросе определяется максимальное количество товара. Во внешнем подзапросе – дата, для которой количество товара оказалось равным максимальному. Необходимо отметить, что нельзя прямо использовать предложение WHERE Количество=Max(Количество), поскольку применять обобщающие функции в предложениях WHERE запрещено. Для достижения желаемого результата следует создать подзапрос, вычисляющий максимальное значение количества, а затем использовать его во внешнем операторе SELECT, предназначенном для выборки дат сделок, где количество товара совпало с максимальным значением.

Пример 7.2. Определить даты сделок, превысивших по количеству товара среднее значение и указать для этих сделок превышение над средним уровнем.

SELECT Дата, Количество, Количество-(SELECT Avg(Количество) FROM Сделка) AS ПревышениеFROM СделкаWHERE Количество> (SELECT Avg(Количество) FROM Сделка)

Пример 7.2. Определение даты сделок, превысивших по количеству товара среднее значение и указать для этих сделок превышение над средним уровнем. (html, txt)

В приведенном примере результат подзапроса, представляющий собой среднее значение количества товара по всем сделкам вообще, используется во внешнем операторе SELECT как для вычисления отклонения количества от среднего уровня, так и для отбора сведений о датах.

Пример 7.3. Определить клиентов, совершивших сделки с максимальным количеством товара.

SELECT Клиент.ФамилияFROM Клиент INNER JOIN Сделка ON Клиент.КодКлиента=Сделка.КодКлиентаWHERE Сделка.Количество= (SELECT Max(Сделка.Количество) FROM Сделка)

Пример 7.3. Определение клиентов, совершивших сделки с максимальным количеством товара. (html, txt)

Здесь показан пример использования подзапроса при выборке данных из разных таблиц.

Пример 7.4. Определить клиентов, в сделках которых количество товара отличается от максимального не более чем на 10%.

SELECT Клиент.Фамилия, Сделка.КоличествоFROM Клиент INNER JOIN Сделка ON Клиент.КодКлиента= Сделка.КодКлиентаWHERE Сделка.Количество>=0.9* (SELECT Max(Сделка.Количество) FROM Сделка)

Пример 7.4. Определение клиентов, в сделках которых количество товара отличается от максимального не более чем на 10%. (html, txt)

Покажем, как применяются подзапросы в предложении HAVING.

Пример 7.5. Определить даты, когда среднее количество проданного за день товара оказалось больше 20 единиц.

SELECT Сделка.Дата, Avg(Сделка.Количество) AS Среднее_за_деньFROM СделкаGROUP BY Сделка.ДатаHAVING Avg(Сделка.Количество)>20

Пример 7.5. Определение даты, когда среднее количество проданного за день товара оказалось больше 20 единиц. (html, txt)

За каждый день определяется среднее количество товара, которое сравнивается с числом 20. Добавим в запрос подзапрос.

Пример 7.6. Определить даты, когда среднее количество проданного за день товара оказалось больше среднего показателя по всем сделкам вообще.

SELECT Сделка.Дата, Avg(Сделка.Количество) AS Среднее_за_деньFROM СделкаGROUP BY Сделка.ДатаHAVING Avg(Сделка.Количество)> (SELECT Avg(Сделка.Количество) FROM Сделка)

Пример 7.6. Определение даты, когда среднее количество проданного за день товара оказалось больше среднего показателя по всем сделкам вообще. (html, txt)

Внутренний подзапрос определяет средний по всем сделкам показатель, с которым во внешнем запросе сравнивается среднее за каждый день количество товара.

Использование подзапросов, возвращающих множество значений

Во многих случаях значение, подлежащее сравнению в предложениях WHERE или HAVING, представляет собой не одно, а несколько значений. Вложенные подзапросы генерируют непоименованное промежуточное отношение, временную таблицу. Оно может использоваться только в том месте, где появляется в подзапросе. К такому отношению невозможно обратиться по имени из какого-либо другого места запроса. Применяемые к подзапросу операции основаны на тех операциях, которые, в свою очередь, применяются к множеству, а именно:

  • { WHERE | HAVING } выражение [ NOT ] IN (подзапрос);
  • { WHERE | HAVING } выражение оператор_сравнения { ALL | SOME | ANY }(подзапрос);
  • {WHERE | HAVING } [ NOT ] EXISTS (подзапрос);
Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...