Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Konvertieren Sie die SQL-Abfrage, um Set-Operatoren zu verwenden

So würden Sie das normalerweise nicht machen, aber als Übung können Sie die Menge aller Kunden-IDs erhalten, und MINUS die Menge aller IDs mit mehr als zwei Transaktionen, die Sie erhalten können, ohne eine Sekunde in die Kundentabelle zu schauen Zeit:

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;

Sie müssen nicht wirklich TRANSACTION beitreten, Sie können einfach die Codewerte in PERFORMS direkt zählen:

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

... aber vielleicht gibt es mehr hinter der Frage, was Sie gezeigt haben, wie z. B. die Einschränkung nach Typ oder Datum.