sql >> Databáze >  >> RDS >> PostgreSQL

Jak spočítat všechny kombinované výskyty v SQL?

Není to snadné, protože v posledním řádku máte jiný počet odpovídajících produktů než v ostatních řádcích. Možná to zvládnete pomocí nějakého operátoru GROUP_CONCAT() (dostupného v MySQL; implementovatelného v jiných DBMS, jako je Informix a pravděpodobně PostgreSQL), ale nejsem si tím jistý.

Párové párování

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;

Zvládnout trojitý zápas je netriviální; rozšířit jej dále než to je rozhodně poměrně obtížné.



  1. Jak vložit data do Winform TreeView (C#) v efektivním kódování?

  2. Načítání informací o datových typech pro sloupce v Oracle OCCI ResultSet

  3. Uspořádejte uzly TreeView přetažením

  4. Změňte oddělovač funkce WM_CONCAT Oracle 11gR2