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

Как да преброим всички комбинирани събития в SQL?

Не е лесно, защото имате различен брой съответстващи продукти в последния ред в сравнение с останалите редове. Може да успеете да го направите с някакъв вид оператор GROUP_CONCAT() (наличен в MySQL; приложим в други СУБД, като Informix и вероятно PostgreSQL), но не съм уверен в това.

Съвпадение по двойки

SELECT p1.product_name AS name1, p2.product_name AS name2, COUNT(*)
  FROM (SELECT p.product_name, h.transaction_id
          FROM products AS p
          JOIN transactions_has_products AS h ON h.product_id = p.product_id
       ) AS p1
  JOIN (SELECT p.product_name, h.transaction_id
          FROM products AS p
          JOIN transactions_has_products AS h ON h.product_id = p.product_id
       ) AS p2
    ON p1.transaction_id = p2.transaction_id
   AND p1.product_name   < p2.product_name
 GROUP BY p1.name, p2.name;

Боравенето с тройния мач е нетривиално; разширяването му по-далеч от това определено е доста трудно.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Изберете редове, които не присъстват в друга таблица

  2. Как да сравним датите в полетата за дата и час в Postgresql?

  3. Кой е най-добрият начин за моделиране на връзка много към много

  4. Postgres просто спря да работи на случаен принцип (Rails, PGSQL.5432)

  5. Много към много SQL заявка за избор на всички изображения, маркирани с определени думи