sql >> Base de Datos >  >> RDS >> Oracle

Convertir consulta SQL para usar operadores de conjuntos

No es como lo haría normalmente, pero como ejercicio, puede obtener el conjunto de todas las ID de clientes y MENOS el conjunto de todas las ID con más de dos transacciones, que puede obtener sin mirar la tabla de clientes por un segundo. tiempo:

SELECT C.ID
FROM CUSTOMER C
MINUS
SELECT P.ID
FROM PERFORMS P
INNER JOIN TRANSACTION T
ON T.CODE = P.CODE
GROUP BY P.ID
HAVING COUNT(T.CODE) > 1;

Realmente no necesita unirse a TRANSACTION, solo puede contar los valores de código en PERFORMS directamente:

SELECT C.ID
FROM CUSTOMER C
MINUS
SELECT P.ID
FROM PERFORMS P
GROUP BY P.ID
HAVING COUNT(P.CODE) > 1;

... pero tal vez haya más en la pregunta de lo que has mostrado, como restringir por tipo o fecha.