PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Isi baris yang hilang saat menggabungkan beberapa bidang di Postgres

Anda dapat menggunakan:

WITH cte AS (
   SELECT date, s.product
   FROM  ... -- some way to generate date series
   CROSS JOIN (SELECT DISTINCT product FROM sales_data) s
)
SELECT 
    c.date,
    c.product,
    COUNT(sd.sale_id) AS sales
FROM cte c
LEFT JOIN sales_data sd
  ON c.date = sd.date AND c.product= sd.product
GROUP BY c.date, c.product
ORDER BY c.date, c.product;

Pertama buat Cartesian product dari tanggal dan produk, lalu LEFT JOIN ke data aktual dan melakukan perhitungan.

Oracle memiliki fitur hebat untuk skenario ini yang disebut Gabungan Luar yang Dipartisi :

SELECT times.time_id, product, quantity 
FROM inventory  PARTITION BY  (product) 
RIGHT OUTER JOIN times ON (times.time_id = inventory.time_id) 
WHERE times.time_id BETWEEN TO_DATE('01/04/01', 'DD/MM/YY') 
      AND TO_DATE('06/04/01', 'DD/MM/YY') 
ORDER BY  2,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. Gunakan di mana kueri dalam tipe data JSONB di Rails Postgres

  2. Kunci utama dengan pemesanan ASC atau DESC?

  3. Debug fungsi PostgreSQL menggunakan pgAdmin

  4. Kesalahan sintaksis PostgreSQL pada atau di dekat 'union'

  5. Spring Batch - Tidak dapat membuat tabel metadata di Postgres dan memuat data aktual ke mysql