SQL-сервер ВСЕ

В этом руководстве вы узнаете, как использовать оператор ALL SQL Server для сравнения значения со списком наборов значений из одного столбца.

Обзор оператора SQL Server ALL

Оператор ALL в SQL Server — это логический оператор, который сравнивает скалярное значение со списком значений из одного столбца, возвращаемым подзапросом.

Ниже показан синтаксис оператора ALL:

scalar_expression comparison_operator ALL( subquery) 

В этом синтаксисе:

  • Скалярное_выражение — это любое допустимое выражение.
  • Оператор_сравнения — это любой допустимый оператор сравнения, включая равно(=), не равно(), больше(>), больше или равно(>=), меньше(<), меньше или равно(<=).
  • Подзапрос в скобках — это оператор SELECT, который возвращает результат одного столбца. Кроме того, тип данных возвращаемого столбца должен совпадать с типом данных скалярного выражения.

Оператор ALL возвращает значение TRUE, если все пары(scalar_expression, v) имеют значение TRUE; v — это значение в результате в одном столбце.

Если одна из пар(scalar_expression, v) возвращает FALSE, то оператор ALL возвращает FALSE.

Примеры операторов SQL Server ALL

Рассмотрим следующую таблицу продуктов из образца базы данных.

таблица продуктов

Следующий оператор возвращает список средних цен на продукты для каждого бренда:

SELECT
    AVG(list_price) avg_list_price
FROM
    production.products
GROUP BY
    brand_id
ORDER BY
    avg_list_price;

Средняя цена SQL Server ALL по марке

1) скалярное_выражение > ВСЕ(подзапрос)

Выражение возвращает значение TRUE, если scalar_expression больше максимального значения, возвращаемого подзапросом.

Например, следующий запрос находит продукты, цены на которые превышают среднюю цену на продукты всех брендов:

SELECT
    product_name,
    list_price
FROM
    production.products
WHERE
    list_price > ALL(
        SELECT
            AVG(list_price) avg_list_price
        FROM
            production.products
        GROUP BY
            brand_id
    )
ORDER BY
    list_price;

SQL Server ALL с примером оператора «больше»

2) скалярное_выражение < ВСЕ(подзапрос)

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

В следующем примере находят продукты, цена по прейскуранту которых меньше наименьшей цены в среднем прайс-листе по бренду:

SELECT
    product_name,
    list_price
FROM
    production.products
WHERE
    list_price < ALL(
        SELECT
            AVG(list_price) avg_list_price
        FROM
            production.products
        GROUP BY
            brand_id
    )
ORDER BY
    list_price DESC;

SQL Server ALL с примером оператора «меньше»

Аналогично вы можете привести собственные примеры использования оператора ALL с одним из следующих операторов сравнения, таких как равно(=), больше или равно(>=), меньше или равно(<=) и не равно().

В этом руководстве вы узнали, как использовать оператор ALL SQL Server для сравнения скалярного значения с одним набором столбцов значений, возвращаемым подзапросом.

Мирослав С.

Автор статей, ИБ-специалист