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

Làm cách nào tôi có thể viết một truy vấn SQL để tính toán số lượng các thành phần được bán với các hội đồng mẹ của chúng? (Postgres 11 / CTE đệ quy?)

Về cơ bản, bạn có giải pháp. Nếu bạn cũng đã lưu trữ số lượng và danh mục trong CTE của mình, bạn chỉ cần thêm WHERE bộ lọc và một SUM tổng hợp sau đó:

SELECT
    child_name,
    SUM(sold_quantity * child_quantity)
FROM cte
WHERE category = 'component'
GROUP BY child_name

Toàn bộ truy vấn của tôi trông như thế này (chỉ khác ở những chi tiết tôi đã đề cập ở trên với của bạn):

demo:db <> fiddle

WITH RECURSIVE cte AS (
    SELECT 
        s.sold_name,
        s.sold_quantity,
        r.child_name,
        r.child_quantity,
        nc.thing_category as category
    FROM 
        sales s
    JOIN relator r
    ON s.sold_name = r.parent_name
    JOIN names_categories nc
    ON r.child_name = nc.thing_name
    
    UNION ALL
    
    SELECT
        cte.sold_name,
        cte.sold_quantity,
        r.child_name,
        r.child_quantity,
        nc.thing_category
    FROM cte
    JOIN relator r ON cte.child_name = r.parent_name
    JOIN names_categories nc
    ON r.child_name = nc.thing_name
)
SELECT
    child_name,
    SUM(sold_quantity * child_quantity)
FROM cte
WHERE category = 'component'
GROUP BY child_name

Lưu ý:Tôi không sử dụng chế độ xem của bạn, vì tôi thấy việc tìm nạp dữ liệu trực tiếp từ các bảng sẽ tiện dụng hơn thay vì kết hợp dữ liệu mà tôi đã có. Nhưng đó chỉ là cách cá nhân tôi thích nó :)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Heroku:nhập từ S3 không thành công

  2. Hàm STRING_AGG () trong PostgreSQL

  3. Lưu theo thứ tự từ nhiều đến nhiều

  4. Nhập một lược đồ xml vào postgres để tự động tạo một bảng và sau đó điền nó bằng một tệp xml?

  5. Cách thay đổi cấu trúc của dữ liệu jsonb được lưu trữ trong Postgres