Oracle
 sql >> Database >  >> RDS >> Oracle

Converti query SQL per utilizzare gli operatori di insiemi

Non è come faresti normalmente, ma come esercizio, puoi ottenere l'insieme di tutti gli ID cliente e MENO l'insieme di tutti gli ID con più di due transazioni, che puoi ottenere senza guardare la tabella dei clienti un secondo tempo:

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;

Non hai davvero bisogno di unirti a TRANSACTION, puoi semplicemente contare i valori del codice in PERFORMS direttamente:

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

... ma forse c'è di più nella domanda su cosa hai mostrato, come limitare per tipo o data.