Penjumlahan Bersyarat dalam Oracle
Dalam Oracle, penjumlahan bersyarat merujuk kepada melaksanakan operasi jumlah kumulatif sambil menetapkan semula nilai terkumpul berdasarkan syarat yang ditentukan . Teknik ini membolehkan anda memanipulasi data dengan cara yang jumlahnya ditetapkan semula kepada nilai tertentu apabila mencapai ambang tertentu.
Untuk mencapai ini, anda boleh memanfaatkan klausa MODEL SQL. Klausa ini membolehkan anda mentakrifkan model data hierarki dan menentukan pengiraan berdasarkan model tersebut.
Pertimbangkan contoh berikut di mana anda ingin mengira jumlah kumulatif yang ditetapkan semula setiap kali melebihi 15:
with test_data (sort_col, addend) as ( SELECT 'A', 3 FROM DUAL UNION ALL SELECT 'B', 7 FROM DUAL UNION ALL SELECT 'C', 6 FROM DUAL UNION ALL SELECT 'D', 5 FROM DUAL UNION ALL SELECT 'E', 9 FROM DUAL UNION ALL SELECT 'F', 3 FROM DUAL UNION ALL SELECT 'G', 8 FROM DUAL ), sorted_inputs (sort_col, sort_order, addend, running_sum_max_15) as ( SELECT sort_col, row_number() over (order by sort_col) sort_order, addend, 0 from test_data ) SELECT sort_col, addend, running_sum_max_15 from sorted_inputs model dimension by (sort_order) measures (sort_col, addend, running_sum_max_15) rules update ( running_sum_max_15[1] = addend[1], running_sum_max_15[sort_order>1] = case when running_sum_max_15[CV(sort_order)-1] < 15 THEN running_sum_max_15[CV(sort_order)-1] ELSE 0 END + addend[CV(sort_order)] )
Keputusan:
SORT_COL | ADDEND | RUNNING_SUM_MAX_15 |
---|---|---|
A | 3 | 3 |
B | 7 | 10 |
C | 6 | 16 |
D | 5 | 5 |
E | 9 | 14 |
F | 3 | 17 |
G | 8 | 8 |
Seperti yang anda lihat, jumlah larian ditetapkan semula kepada 0 selepas melebihi 15 untuk baris 'C' dan 'F'. Ini membolehkan anda melakukan penjumlahan bersyarat berdasarkan kriteria khusus yang ditentukan dalam pertanyaan anda.
Atas ialah kandungan terperinci Bagaimana untuk Menetapkan Semula Jumlah Terkumpul dalam Oracle Berdasarkan Syarat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!