Oracle
 sql >> база данни >  >> RDS >> Oracle

Преобразувайте SQL заявка, за да използвате оператори за набори

Това не е начинът, по който обикновено правите това, но като упражнение можете да получите набора от всички идентификатори на клиенти и МИНУС набора от всички идентификатори с повече от две транзакции, които можете да получите, без да гледате таблицата с клиенти за секунда време:

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;

Всъщност не е необходимо да се присъединявате към TRANSACTION, можете просто да преброите стойностите на кода в PERFORMS директно:

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

... но може би има още нещо по въпроса какво сте показали, като ограничаване по тип или дата.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL група по дата (час)

  2. Най-полезните заявки на AWR за надстройка на R12.2/R12.1

  3. Проблем с производителността на хибернация с връзка OneToMany / nullable

  4. Правилният начин за предоставяне на достъп на потребителите до допълнителни схеми в Oracle

  5. for цикъл вътре в оракул на курсора