iT邦幫忙

0

如何累加數量

如下圖 請問要如何用編號累加數量呢??
且換編號要重新計算

日期 編號 數量 累加數量
11/1 A 10 101
11/2 A 20 30
11/3 A 25 55
11/4 A 15 70
11/5 A 30 100
11/6 B 11 11
11/7 B 23 34
11/8 B 2 36
11/9 D 9 9
11/10 D 7 16
11/11 D 58 74
11/12 D 6 82
11/13 C 10 10
11/14 C 10 20

2 個回答

1
一級屠豬士
iT邦高手 1 級 ‧ 2019-11-30 15:38:03
最佳解答
create table ithelp191130 (
  id smallint generated always as identity primary key
, idate date not null
, grp text not null
, val smallint not null
);

insert into ithelp191130 (idate, grp, val) values
('2019/11/1'::date, 'A', 10),
('2019/11/2'::date, 'A', 20),
('2019/11/3'::date, 'A', 25),
('2019/11/4'::date, 'A', 15),
('2019/11/5'::date, 'A', 30),
('2019/11/6'::date, 'B', 11),
('2019/11/7'::date, 'B', 23),
('2019/11/8'::date, 'B', 2),
('2019/11/9'::date, 'D', 9),
('2019/11/10'::date, 'D', 7),
('2019/11/11'::date, 'D', 58),
('2019/11/12'::date, 'D', 6),
('2019/11/13'::date, 'C', 10),
('2019/11/14'::date, 'C', 10);

select idate
     , grp
     , val
     , sum(val) over (partition by grp order by idate asc 
          rows between unbounded preceding and current row)
       as "累加數量"
  from ithelp191130
 order by idate;

+------------+-----+-----+----------+
|   idate    | grp | val | 累加數量  |
+------------+-----+-----+----------+
| 2019-11-01 | A   |  10 |       10 |
| 2019-11-02 | A   |  20 |       30 |
| 2019-11-03 | A   |  25 |       55 |
| 2019-11-04 | A   |  15 |       70 |
| 2019-11-05 | A   |  30 |      100 |
| 2019-11-06 | B   |  11 |       11 |
| 2019-11-07 | B   |  23 |       34 |
| 2019-11-08 | B   |   2 |       36 |
| 2019-11-09 | D   |   9 |        9 |
| 2019-11-10 | D   |   7 |       16 |
| 2019-11-11 | D   |  58 |       74 |
| 2019-11-12 | D   |   6 |       80 |
| 2019-11-13 | C   |  10 |       10 |
| 2019-11-14 | C   |  10 |       20 |
+------------+-----+-----+----------+
(14 rows)
1
小魚
iT邦大師 1 級 ‧ 2019-11-30 11:14:37

這種需求,
我覺得用後端寫比較快.

sql 西起來

小魚 iT邦大師 1 級 ‧ 2019-11-30 12:49:22 檢舉

說到這個,
如果要問SQL問題,
要說明一下是哪種SQL,
每種SQL的語法都不大一樣.

froce iT邦大師 3 級 ‧ 2019-11-30 22:09:36 檢舉

我也有同樣的想法,所以我們都不是DBA。XD

每次寫SQL都覺得很難搞懂DBA們怎麼想出這些程式的。

我要發表回答

立即登入回答