Клаузула 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 часто могут использоваться взаимозаменяемо с различной логикой Boolean, и они оба полезны, если у вас есть две таблицы, которые имеют общую колонку (или колонки).
Например, предположим, что у нас есть несколько миллионов строк исторических данных о криптовалюте, содержащих цены сделок и объем:
Запрос:
Результат:
Теперь предположим, что у нас есть таблица с именем holdings, которая содержит список криптовалют, которые мы владеем, вместе с количеством монет:
Мы можем использовать EXCEPT, чтобы ответить на вопрос "Какие монеты, которые мы имеем, никогда не торговались ниже $10?":
Результат:
Это означает, что из четырех криптовалют, которые мы имеем, только Bitcoin никогда не опускался ниже $10 (на основе ограниченных данных, которые мы имеем в этом примере).
Использование EXCEPT DISTINCT
Обратите внимание, что в предыдущем запросе у нас было несколько владений Bitcoin в результате. Вы можете добавить DISTINCT к EXCEPT, чтобы исключить дублирующиеся строки из результата:
Результат:
Смотрите также