A cláusula EXCEPT retorna apenas as linhas produzidas pela primeira consulta e não pela segunda.
- Ambas as consultas devem ter o mesmo número de colunas, na mesma ordem e com o mesmo tipo de dado.
- O resultado de
EXCEPTpode conter linhas duplicadas. UseEXCEPT DISTINCTse isso não for desejável. - Várias cláusulas
EXCEPTsão executadas da esquerda para a direita quando os parênteses não são especificados. - O operador
EXCEPTtem a mesma prioridade que a cláusulaUNIONe prioridade menor que a cláusulaINTERSECT.
Sintaxe
EXCEPT() pode ser usado para excluir colunas de um resultado na mesma tabela, como no BigQuery (Google Cloud), usando a seguinte sintaxe:
Exemplos
EXCEPT.
Filtrando números usando a cláusula EXCEPT
Query
Response
Excluindo colunas específicas com EXCEPT()
EXCEPT() pode ser usado para excluir rapidamente colunas de um resultado. Por exemplo, se quisermos selecionar todas as colunas de uma tabela, exceto algumas colunas específicas, como mostrado no exemplo abaixo:
Query
Response
Usando EXCEPT e INTERSECT com dados de criptomoedas
EXCEPT e INTERSECT muitas vezes podem ser usados de forma intercambiável, com lógicas booleanas diferentes, e ambos são úteis quando você tem duas tabelas que compartilham uma coluna (ou colunas).
Por exemplo, suponha que tenhamos alguns milhões de linhas de dados históricos de criptomoedas contendo preços de negociação e volume:
Query
Response
holdings que contém uma lista das criptomoedas que possuímos, juntamente com a quantidade de moedas:
Query
EXCEPT para responder a uma pergunta como “Quais moedas que temos nunca foram negociadas abaixo de US$ 10?”:
Query
Response
Usando EXCEPT DISTINCT
DISTINCT a EXCEPT para eliminar linhas duplicadas do resultado:
Query
Response