PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Điền vào các hàng còn thiếu khi tổng hợp trên nhiều trường trong Postgres

Bạn có thể sử dụng:

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;

Đầu tiên tạo sản phẩm Descartes gồm ngày tháng và sản phẩm, sau đó LEFT JOIN đến dữ liệu thực tế và thực hiện các phép tính.

Oracle có tính năng tuyệt vời cho tình huống này được gọi là Tham gia bên ngoài được phân vùng :

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. thông tin không đầy đủ từ truy vấn trên pg_views

  2. Trình tự PostgreSQL đảm bảo một ID duy nhất

  3. Tính tuổi theo năm trong PostgreSQL

  4. Câu lệnh SQL để xóa chỉ một hàng trong số các bản sao

  5. thiết kế cơ sở dữ liệu postgresql cho thương mại điện tử