Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Converter consulta SQL para usar operadores de conjunto


Não é como você faria normalmente, mas como exercício, você pode obter o conjunto de todos os IDs de clientes e MENOS o conjunto de todos os IDs com mais de duas transações, que você pode obter sem olhar para a tabela de clientes um segundo 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;

Você realmente não precisa participar de TRANSACTION, basta contar os valores do código em PERFORMS diretamente:
SELECT C.ID
FROM CUSTOMER C
MINUS
SELECT P.ID
FROM PERFORMS P
GROUP BY P.ID
HAVING COUNT(P.CODE) > 1;

... mas talvez haja mais na questão do que você mostrou, como restringir por tipo ou data.