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

Оператор EXCEPT

Оператор 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, чтобы удалить дублирующиеся строки из результата:

Результат:

Смотрите также