oracle中sum分组取值/汇总值用如下方法。
公司主营业务:成都做网站、成都网站建设、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联推出铜陵免费做网站回馈大家。
如emp表中有如下数据:
现要按deptno分组,求每组中sal的值/汇总值,可用如下语句:
select deptno,sum(sal)/(select sum(sal) from emp) from emp group by deptno;
查询结果:
1、首先在oracle中avg函数,使用聚合函数在计算平均值时,会报空值排除在外。
2、刚才在计算的时候结果是550,而comm列的总各为2200 所以计算平均时是只计算了除了空值的行。
3、需要注意的是,avg函数不能单独使用在where条件中不然会报如下错误。
4、如果想要查询出大于平均值的结果,需要使用group by ...having 子句。
5、然后用count函数用来统计列的总行数,就完成了。
使用如下:sum是求和函数,例如:select sum(列名) from 表名,用于计算列的总和。
sum是求指定字段下所有数据的相加总和,select sum(o.amount) from pos_order o 意思就是求出amount这个字段下的数据总和。
1、sum为聚合函数:是 SQL语言中一种特殊的函数:聚合函数,SUM, COUNT, MAX, MIN, AV等。这些函数和其它函数的根本区别就是它们一般作用在多条记录上。
2、其他举例:SELECT SUM(population) FROM COUNTRY ,这里的SUM作用在所有返回记录的population字段上,结果就是该查询只返回一个结果,即所有国家的总人口数。
扩展资料
一、应用
Transact-SQL编程语言提供下列聚合函数:
1、AVG 返回指定组中的平均值,空值被忽略。
例:select prd_no,avg(qty) from sales group by prd_no
2、 COUNT 返回指定组中项目的数量。
例:select count(prd_no) from sales
3、 MAX 返回指定数据的最大值。
例:select prd_no,max(qty) from sales group by prd_no
4、 MIN 返回指定数据的最小值。
例:select prd_no,min(qty) from sales group by prd_no
5、 SUM 返回指定数据的和,只能用于数字列,空值被忽略。
例:select prd_no,sum(qty) from sales group by prd_no
6、 COUNT_BIG 返回指定组中的项目数量,与COUNT函数不同的是COUNT_BIG返回bigint值,而COUNT返回的是int值。
例:select count_big(prd_no) from sales
二、Oracle
Oracle数据库系统是美国Oracle公司(甲骨文公司)提供的以分布式数据库为核心的一组软件产品,是目前最流行的C/S或B/S体系结构的数据库之一,在数据库领域一直处于领先地位。
Oracle数据库是目前世界上使用最为广泛的数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类数据操作环境。
作为一个通用的数据库系统,Oracle具有完整的数据管理功能;作为一个关系数据库,Oracle是一个完备关系的产品;作为分布式数据库,Oracle实现了分布式处理功能。因此,Oracle数据库是一种高效率、可靠性好的适应高吞吐量的数据库解决方案。
参考资料来源:百度百科:聚合函数
百度百科:SQL数据库
连续求和分析函数 sum(…) over(…)
NC示例:
1、select bdcode,sum(1) over(order by bdcode) aa from bd_bdinfo
【示例】
原表信息
规则
sum(…) over( ),对所有行求和。
sum(…) over( order by … ), 连续求和。
sum(…) over( partition by… ),同组内所行求和。
sum(…) over( partition by… order by … ),同第1点中的排序求和原理,只是范围限制在组内。
扩展资料
oracle 数据库的特点
1、完整的数据管理功能:
1)数据的大量性
2)数据的保存的持久性
3)数据的共享性
4)数据的可靠性
2、完备关系的产品:
1)信息准则---关系型DBMS的所有信息都应在逻辑上用一种方法,即表中的值显式地表示;
2)保证访问的准则
3)视图更新准则---只要形成视图的表中的数据变化了,相应的视图中的数据同时变化
4)数据物理性和逻辑性独立准则
3、分布式处理功能:
ORACLE数据库自第5版起就提供了分布式处理能力,到第7版就有比较完善的分布式数据库功能了,一个ORACLE分布式数据库由oraclerdbms、sql*Net、SQL*CONNECT和其他非ORACLE的关系型产品构成。
参考资料来源:百度百科-Oracle数据库
你的sql是对列zjzh_bankid分类计数,你说的求和是把列zjzh_bankid的所有值相加吗?
select sum(zjzh_bankid) from v_Ckyeb;
如果是把分类的所有值计算和的话只能分开计算了
select sum(zjzh_bankid) from v_Ckyeb where zjzh_bankid='';
楼主的PL/SQL语句非常简洁,应该可以实现你要的功能,可以说用得很好。
1.SUM(列名)是SQL内置函数,用于求这一列数据的和,如果跟GROUP BY 要注意是求这一组记录的这一列数据之和。
2.case when…then…else…end 这是PL/SQL语句,意思是遇到什么情况,就怎么怎么做,没有遇到的话,就按else后面的做,最后end结束。
3.sum(case when s_id=1 then p_num else 0 end)……group by p_id
这句话的意思是求 p_num 这一列的和,但是要在 s_id=01的记录里面去找,而且后面有group 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,每一种情况是一条记录,这样就产生了s1_id这一列。
其实可以用笨一点的办法,下面这几条语句可以实现同样的功能,语句很好理解,没有复杂的函数和语法,就是稍长。
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张表合并。
以上纯手动打造,给分吧!