Oracle
 sql >> Base de données >  >> RDS >> Oracle

Convertir une requête SQL pour utiliser des opérateurs d'ensemble

Ce n'est pas comme vous le feriez normalement, mais comme exercice, vous pouvez obtenir l'ensemble de tous les identifiants client, et MOINS l'ensemble de tous les identifiants avec plus de deux transactions, que vous pouvez obtenir sans regarder la table des clients une seconde heure :

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;

Vous n'avez pas vraiment besoin de rejoindre TRANSACTION, vous pouvez simplement compter les valeurs de code directement dans PERFORMS :

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

... mais peut-être qu'il y a plus à la question de savoir ce que vous avez montré, comme restreindre par type ou par date.