oracle中sum分組取值/匯總值用如下方法。
公司主營業(yè)務(wù):成都做網(wǎng)站、成都網(wǎng)站建設(shè)、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出銅陵免費做網(wǎng)站回饋大家。
如emp表中有如下數(shù)據(jù):
現(xiàn)要按deptno分組,求每組中sal的值/匯總值,可用如下語句:
select?deptno,sum(sal)/(select?sum(sal)?from?emp)?from?emp?group?by?deptno;
查詢結(jié)果:
1、首先在oracle中avg函數(shù),使用聚合函數(shù)在計算平均值時,會報空值排除在外。
2、剛才在計算的時候結(jié)果是550,而comm列的總各為2200?所以計算平均時是只計算了除了空值的行。
3、需要注意的是,avg函數(shù)不能單獨使用在where條件中不然會報如下錯誤。
4、如果想要查詢出大于平均值的結(jié)果,需要使用group by ...having?子句。
5、然后用count函數(shù)用來統(tǒng)計列的總行數(shù),就完成了。
使用如下:sum是求和函數(shù),例如:select sum(列名) from 表名,用于計算列的總和。
sum是求指定字段下所有數(shù)據(jù)的相加總和,select sum(o.amount) from pos_order o 意思就是求出amount這個字段下的數(shù)據(jù)總和。
1、sum為聚合函數(shù):是?SQL語言中一種特殊的函數(shù):聚合函數(shù),SUM, COUNT, MAX, MIN, AV等。這些函數(shù)和其它函數(shù)的根本區(qū)別就是它們一般作用在多條記錄上。
2、其他舉例:SELECT SUM(population) FROM COUNTRY ,這里的SUM作用在所有返回記錄的population字段上,結(jié)果就是該查詢只返回一個結(jié)果,即所有國家的總?cè)丝跀?shù)。
擴展資料
一、應(yīng)用
Transact-SQL編程語言提供下列聚合函數(shù):
1、AVG 返回指定組中的平均值,空值被忽略。
例:select prd_no,avg(qty) from sales group by prd_no
2、 COUNT 返回指定組中項目的數(shù)量。
例:select count(prd_no) from sales
3、 MAX 返回指定數(shù)據(jù)的最大值。
例:select prd_no,max(qty) from sales group by prd_no
4、 MIN 返回指定數(shù)據(jù)的最小值。
例:select prd_no,min(qty) from sales group by prd_no
5、 SUM 返回指定數(shù)據(jù)的和,只能用于數(shù)字列,空值被忽略。
例:select prd_no,sum(qty) from sales group by prd_no
6、 COUNT_BIG 返回指定組中的項目數(shù)量,與COUNT函數(shù)不同的是COUNT_BIG返回bigint值,而COUNT返回的是int值。
例:select count_big(prd_no) from sales
二、Oracle
Oracle數(shù)據(jù)庫系統(tǒng)是美國Oracle公司(甲骨文公司)提供的以分布式數(shù)據(jù)庫為核心的一組軟件產(chǎn)品,是目前最流行的C/S或B/S體系結(jié)構(gòu)的數(shù)據(jù)庫之一,在數(shù)據(jù)庫領(lǐng)域一直處于領(lǐng)先地位。
Oracle數(shù)據(jù)庫是目前世界上使用最為廣泛的數(shù)據(jù)庫管理系統(tǒng),系統(tǒng)可移植性好、使用方便、功能強,適用于各類數(shù)據(jù)操作環(huán)境。
作為一個通用的數(shù)據(jù)庫系統(tǒng),Oracle具有完整的數(shù)據(jù)管理功能;作為一個關(guān)系數(shù)據(jù)庫,Oracle是一個完備關(guān)系的產(chǎn)品;作為分布式數(shù)據(jù)庫,Oracle實現(xiàn)了分布式處理功能。因此,Oracle數(shù)據(jù)庫是一種高效率、可靠性好的適應(yīng)高吞吐量的數(shù)據(jù)庫解決方案。
參考資料來源:百度百科:聚合函數(shù)
百度百科:SQL數(shù)據(jù)庫
連續(xù)求和分析函數(shù) sum(…) over(…)
NC示例:
1、select bdcode,sum(1) over(order by bdcode) aa from bd_bdinfo
【示例】
原表信息
規(guī)則
sum(…) over( ),對所有行求和。
sum(…) over( order by … ), 連續(xù)求和。
sum(…) over( partition by… ),同組內(nèi)所行求和。
sum(…) over( partition by… order by … ),同第1點中的排序求和原理,只是范圍限制在組內(nèi)。
擴展資料
oracle?數(shù)據(jù)庫的特點
1、完整的數(shù)據(jù)管理功能:
1)數(shù)據(jù)的大量性
2)數(shù)據(jù)的保存的持久性
3)數(shù)據(jù)的共享性
4)數(shù)據(jù)的可靠性
2、完備關(guān)系的產(chǎn)品:
1)信息準(zhǔn)則---關(guān)系型DBMS的所有信息都應(yīng)在邏輯上用一種方法,即表中的值顯式地表示;
2)保證訪問的準(zhǔn)則
3)視圖更新準(zhǔn)則---只要形成視圖的表中的數(shù)據(jù)變化了,相應(yīng)的視圖中的數(shù)據(jù)同時變化
4)數(shù)據(jù)物理性和邏輯性獨立準(zhǔn)則
3、分布式處理功能:
ORACLE數(shù)據(jù)庫自第5版起就提供了分布式處理能力,到第7版就有比較完善的分布式數(shù)據(jù)庫功能了,一個ORACLE分布式數(shù)據(jù)庫由oraclerdbms、sql*Net、SQL*CONNECT和其他非ORACLE的關(guān)系型產(chǎn)品構(gòu)成。
參考資料來源:百度百科-Oracle數(shù)據(jù)庫
你的sql是對列zjzh_bankid分類計數(shù),你說的求和是把列zjzh_bankid的所有值相加嗎?
select sum(zjzh_bankid) from v_Ckyeb;
如果是把分類的所有值計算和的話只能分開計算了
select sum(zjzh_bankid) from v_Ckyeb where zjzh_bankid='';
樓主的PL/SQL語句非常簡潔,應(yīng)該可以實現(xiàn)你要的功能,可以說用得很好。
1.SUM(列名)是SQL內(nèi)置函數(shù),用于求這一列數(shù)據(jù)的和,如果跟GROUP BY 要注意是求這一組記錄的這一列數(shù)據(jù)之和。
2.case when…then…else…end 這是PL/SQL語句,意思是遇到什么情況,就怎么怎么做,沒有遇到的話,就按else后面的做,最后end結(jié)束。
3.sum(case when s_id=1 then p_num else 0 end)……group by p_id
這句話的意思是求 p_num 這一列的和,但是要在 s_id=01的記錄里面去找,而且后面有g(shù)roup by p_id,那就不僅是s_id=01,還要考慮p_id=1且s_id=01,p_id=2且s_id=02,p_id=3且s_id=03 的情況,如果p_num沒有查找到則返回0,每一種情況是一條記錄,這樣就產(chǎn)生了s1_id這一列。
其實可以用笨一點的辦法,下面這幾條語句可以實現(xiàn)同樣的功能,語句很好理解,沒有復(fù)雜的函數(shù)和語法,就是稍長。
create table mypro_1 as select p_id,p_num from mypro where s_id=01 group by p_id
create table mypro_2 as select p_id,p_num from mypro where s_id=02 group by p_id
create table mypro_3 as select p_id,p_num from mypro where s_id=03 group by p_id
select a.p_id,a.p_num as s1_id,b.p_num as s2_id,c.p_num as s3_id
from mypro_1 a full join mypro_2 b full join mypro_3 c
where a.p_id=b.p_id=c.p_id
order by a.p_id DESC
簡單的思路就是先查詢出3張表,然后把這3張表合并。
以上純手動打造,給分吧!