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

Bagaimana saya bisa menulis kueri SQL untuk menghitung jumlah komponen yang dijual dengan rakitan induknya? (Postgres 11/CTE rekursif?)

Pada dasarnya Anda punya solusinya. Jika Anda juga menyimpan jumlah dan kategori di CTE, Anda cukup menambahkan WHERE filter dan SUM agregasi setelahnya:

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

Seluruh kueri saya terlihat seperti ini (yang hanya berbeda dalam detail yang saya sebutkan di atas dari Anda):

demo:db<>biola

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

Catatan:Saya tidak menggunakan tampilan Anda, karena menurut saya lebih praktis untuk mengambil data langsung dari tabel daripada menggabungkan data yang sudah saya miliki. Tapi itulah cara saya pribadi menyukainya :)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hitung frekuensi array atau objek jsonb

  2. Kueri dalam pg_stat_activity terpotong?

  3. org.postgresql.util.PSQLException:ERROR:tidak dapat membuat serial akses karena dependensi baca/tulis di antara transaksi

  4. rails 3.2.2 (atau 3.2.1) + Postgresql 9.1.3 + Ubuntu 11.10 Kesalahan koneksi

  5. Hibernate tidak membuat Tabel di database