Oracle實現統計根據時間段統計累積銷售量


自己出了一個題,原本打算配合分析函數完善數據的,結果發現使用分析函數反而走偏了,如題:

根據時間段(精確到月)按月查詢時間段內截止當前月份最后一刻各物品的累積銷售量,
(比如傳入時間參數2021-04到2021-05月)即分別統計從產生數據開始截止4月末各物品銷售累積量和截止5月末各物品累積量

示例數據

insert into T_TABEL (時間, 單號, 物品, 銷售量, 銷售金額)
values (to_date('01-02-2021', 'dd-mm-yyyy'), '002', '物品A', 5, 500);

insert into T_TABEL (時間, 單號, 物品, 銷售量, 銷售金額)
values (to_date('03-02-2021', 'dd-mm-yyyy'), '001', '物品A', 2, 200);

insert into T_TABEL (時間, 單號, 物品, 銷售量, 銷售金額)
values (to_date('12-04-2021', 'dd-mm-yyyy'), '008', '物品A', 3, 300);

insert into T_TABEL (時間, 單號, 物品, 銷售量, 銷售金額)
values (to_date('24-04-2021', 'dd-mm-yyyy'), '007', '物品A', 5, 500);

insert into T_TABEL (時間, 單號, 物品, 銷售量, 銷售金額)
values (to_date('07-05-2021', 'dd-mm-yyyy'), '010', '物品A', 3, 300);

insert into T_TABEL (時間, 單號, 物品, 銷售量, 銷售金額)
values (to_date('16-05-2021', 'dd-mm-yyyy'), '011', '物品A', 5, 500);

insert into T_TABEL (時間, 單號, 物品, 銷售量, 銷售金額)
values (to_date('18-02-2021', 'dd-mm-yyyy'), '003', '物品B', 3, 150);

insert into T_TABEL (時間, 單號, 物品, 銷售量, 銷售金額)
values (to_date('11-04-2021', 'dd-mm-yyyy'), '006', '物品B', 3, 150);

insert into T_TABEL (時間, 單號, 物品, 銷售量, 銷售金額)
values (to_date('18-05-2021', 'dd-mm-yyyy'), '012', '物品B', 1, 50);

insert into T_TABEL (時間, 單號, 物品, 銷售量, 銷售金額)
values (to_date('08-03-2021', 'dd-mm-yyyy'), '005', '物品C', 8, 560);

insert into T_TABEL (時間, 單號, 物品, 銷售量, 銷售金額)
values (to_date('13-03-2021', 'dd-mm-yyyy'), '004', '物品C', 6, 420);

insert into T_TABEL (時間, 單號, 物品, 銷售量, 銷售金額)
values (to_date('11-04-2021', 'dd-mm-yyyy'), '009', '物品C', 1, 70);

最先想到用分析函數實現,結果出BUG了,如果某月沒銷售過某物品,那么這個月將統計不到這個物品的累積銷售,繞來繞去雖然能達到最終效果但是太過混亂,實際上效率各方面的也比較拙劣

后面又想到個方式實現,以此記錄,

SELECT b.sj 時間,
a.物品,
SUM(a.銷售量)
FROM T_TABEL A,(SELECT DISTINCT to_char(b1.時間,'yyyy-mm') sj FROM T_TABEL b1 WHERE b1.時間>=TRUNC(SYSDATE-50)) b
WHERE to_char(a.時間,'yyyy-mm') <=b.sj
GROUP BY b.sj,
a.物品
ORDER BY b.sj,
a.物品


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM