Перейти к основному содержимому
Перейти к основному содержимому

EXCEPT Clause

Клауза EXCEPT возвращает только те строки, которые получаются из первого запроса без второго.

  • Оба запроса должны содержать одинаковое количество колонок в одинаковом порядке и с одинаковым типом данных.
  • Результат EXCEPT может содержать дубликатные строки. Используйте EXCEPT DISTINCT, если это нежелательно.
  • Несколько операторов EXCEPT выполняются слева направо, если скобки не указаны.
  • Оператор EXCEPT имеет такой же приоритет, как и клаузу UNION, и более низкий, чем у клаузи INTERSECT.

Синтаксис

Условие может быть любым выражением в зависимости от ваших требований.

Дополнительно, EXCEPT() может использоваться для исключения колонок из результата в той же таблице, как это возможно в BigQuery (Google Cloud), с использованием следующего синтаксиса:

Примеры

Примеры в этом разделе демонстрируют использование клаузы EXCEPT.

Фильтрация чисел с помощью клаузы EXCEPT

Вот простой пример, который возвращает числа от 1 до 10, которые не являются частью чисел от 3 до 8:

Запрос:

Результат:

Исключение определенных колонок с помощью EXCEPT()

EXCEPT() может использоваться для быстрого исключения колонок из результата. Например, если мы хотим выбрать все колонки из таблицы, кроме нескольких выбранных колонок, как показано в следующем примере:

Запрос:

Результат:

Использование EXCEPT и INTERSECT с данными о криптовалюте

EXCEPT и INTERSECT часто можно использовать взаимозаменяемо с различной логикой, и оба они полезны, если у вас есть две таблицы, которые разделяют общие колонки (или колонки). Например, предположим, что у нас есть несколько миллионов строк исторических данных о криптовалюте, содержащие цены сделок и объемы:

Запрос:

Результат:

Теперь предположим, что у нас есть таблица под названием holdings, которая содержит список криптовалют, которые мы держим, вместе с количеством монет:

Мы можем использовать EXCEPT, чтобы ответить на вопрос "Какие монеты мы владеем и которые никогда не торговались ниже $10?":

Результат:

Это означает, что из четырех криптовалют, которыми мы владеем, только Bitcoin никогда не снижался ниже $10 (основываясь на ограниченных данных, которые у нас здесь в этом примере).

Использование EXCEPT DISTINCT

Обратите внимание, что в предыдущем запросе у нас было несколько держаний Bitcoin в результате. Вы можете добавить DISTINCT к EXCEPT, чтобы удалить дубликатные строки из результата:

Результат:

См. также