sum() over(partition by 字段1 order by 字段2)??
巍山ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!
用下面這個數(shù)據(jù)集舉例。
create table tb(id int ,num ,int);
insert into tb values(1,2);
insert into tb values(2,3);
insert into tb values(3,4);
insert into tb values(4,5);
insert into tb values(5,6);
select id,num,sum(num) over(order by num) cumsum from tb;
order by 默認為升序,添加關(guān)鍵字 desc 后為降序排列。
為了更進一步了解這個函數(shù)的工作原理,我們增加2行數(shù)據(jù)。
insert into tb values(1,5);
insert into tb values(1,7);
在執(zhí)行一次上面那個SQL語句:
select id,num,sum(num) over(order by num) cumsum from tb;
注意看id字段,其排序已被打亂,這是按num字段升序排列的結(jié)果,所以,參數(shù)order by 起排序作用。
select id,num,sum(num) over(partition by id order by num) from tb;
按id字段分組累加,組內(nèi)按num字段排序。
從中取出所有nck相同的hweight的值,是更新到所有nck相同的數(shù)據(jù)的hweight2字段中么?
這個是更新所有數(shù)據(jù)的hweight2為hweight的累加。
update tab a set hweight2=(select sum(hweight) from tab b where a.nck=b.nck group by nck);
更新hweight3的值
update tab a set hweight3=hweight1-hweight-hweight2;
取值。
select hweight2,hweight3 from tab
這個累加可以寫在存儲過程中,在java中調(diào)用,也可以在java里面執(zhí)行update語句。
如果是數(shù)據(jù)累加的話,可以通過sum函數(shù)來實現(xiàn),如果是計數(shù)的話,可以通過count來實現(xiàn)。
sql:select username ,count(accountNo) as count,sum(amount) as amount
from tablename order by username desc group by username;
以上就可以求出username下,accountNo的條數(shù)和對應(yīng)的總amount,之后通過username字段降序排序。