La cláusula EXCEPT devuelve solo aquellas filas que resultan de la primera consulta y no de la segunda.
- Ambas consultas deben tener el mismo número de columnas, en el mismo orden y con el mismo tipo de dato.
- El resultado de
EXCEPTpuede contener filas duplicadas. UseEXCEPT DISTINCTsi esto no es deseable. - Varias cláusulas
EXCEPTse ejecutan de izquierda a derecha si no se especifican paréntesis. - El operador
EXCEPTtiene la misma prioridad que la cláusulaUNIONy menor prioridad que la cláusulaINTERSECT.
Sintaxis
EXCEPT() puede usarse para excluir columnas del resultado en la misma tabla, como es posible en BigQuery (Google Cloud), con la siguiente sintaxis:
Ejemplos
EXCEPT.
Filtrar números con la cláusula EXCEPT
Query
Response
Excluir columnas específicas con EXCEPT()
EXCEPT() puede usarse para excluir rápidamente columnas de un resultado. Por ejemplo, si queremos seleccionar todas las columnas de una tabla excepto algunas columnas específicas, como se muestra en el ejemplo siguiente:
Query
Response
Uso de EXCEPT e INTERSECT con datos de criptomonedas
EXCEPT e INTERSECT a menudo pueden usarse de forma indistinta con distinta lógica booleana, y ambos son útiles si tiene dos tablas que comparten una columna (o varias).
Por ejemplo, supongamos que tenemos unos millones de filas de datos históricos de criptomonedas que contienen precios de transacción y volumen:
Query
Response
holdings que contiene una lista de las criptomonedas que poseemos, junto con la cantidad de monedas:
Query
EXCEPT para responder a una pregunta como “¿Qué monedas que tenemos nunca han cotizado por debajo de $10?”:
Query
Response
Uso de EXCEPT DISTINCT
DISTINCT a EXCEPT para eliminar las filas duplicadas del resultado:
Query
Response