oracle sql sum 根据一个唯一字段计算某个字段的和

作者&投稿:单于放 (若有异议请与网页底部的电邮联系)
oracle中查出某个字段重复的次数并计算重复次数的总和~

用count既可以查出重复次数。
例:tabletest
表,有A、B、C3个字段。要查找字段B的重复次数
select
count(A),
B
from
tabletest
group
by
B;
即可查出B字段下每个值的重复次数,如果要查有重复数据的总和
select
count(A),
B
from
tabletest
group
by
B
having
count(A)>1;

实现的方法和步骤如下:
1、首先,打开数据库连接客户端Navicat Premium并创建一个新的表结构,其中age列有意设置为varchar,如下图所示,然后进入下一步。




2、其次,完成上述步骤后,为刚刚创建的表创建一些数据,如下图所示,然后进入下一步。




3、接着,完成上述步骤后,当数据量较小时,可以使用sum()函数直接求和,因为其可以自动识别SQL中的字符串类型还是数字类型,如下图所示,然后进入下一步。



4、然后,以上适用于整数或少量数据。 如果数据量太大并且准确性不适用,则可以考虑使用SQL CAST()和CONVERT()函数,如下图所示,然后进入下一步。




5、最后,看一下CONVERT()函数。 该功能主要用于满足精度要求。 在这里,更改原始数据,并将age列更改为小数点以测试此功能,如下图所示。这样,问题就解决了。



先需要一步去重的操作,然后才能继续操作。
去重可以用group by也可以用rank开窗。
我都写一下,然后你自己判断。
group by写法,这个写法两次group效率应该低的吓人,而且感觉有些浪费。max的写法,是因为反正数字一样,max和min没有区别。mid也可以。
select description,rolegroupdescription,count(appl_no),sum(year_premium_o) from (select description,rolegroupdescription,appl_no,max(year_premium) year_premium_o from table group by description,rolegroupdescription,appl_no) group by description,rolegroupdescription
rank写法
select description,rolegroupdescription,count(appl_no),sum(year_premium) from (select rank()over(partion by description,rolegroupdescription,appl_no) row_num, description,rolegroupdescription,appl_no,year_premium from table) where row_num=1 group by description,rolegroupdescription
个人感觉可以考虑在连接的时候去除掉重复字段,至少这里我没有看到重复字段的相关作用,如果去掉重复字段那么就简单很多了。


玉屏侗族自治县19413587757: oracle 里sum(1)什么意思 -
边剑凯兰: 这个就是相当于count(*),如果你查询的满足条件的有五条数据那么sum(1)就是5,如果有sum(2)就是10.select sum(1) from emp.我的理解就是在emp的每一行有一个字段和值都为1的常量.所以sum(1)就是1*count(*),sum(2)就是2*count(*).个人理解,不知道是否正确

玉屏侗族自治县19413587757: Oracle中的SQL查询语句:包含表一所有数据,根据表二中的某一字段的不同条件分别求另一字段的和. -
边剑凯兰: select t1.*,t2.正分,t2.负分 from 表一 t1,(select 部门,sum(decode(正负,Y,分值,0)) as 正分,sum(decode(正负,N,分值,0)) as 负分 from 表二 group by 部门) t2 where t1.部门=t2.部门

玉屏侗族自治县19413587757: 如何用SQL语句求oracle 数据库所有表的行数? -
边剑凯兰: 可以从表user_tables中查询. select sum(num_rows) from user_tables ; 就是显示用户所有表的行数其中num_rows是每个表的行数,用sum加总一下,就是当前用户所有表的总行数. 但因为user_tables中的数据不是实时统计,会有时间差,所以以上Sql统计得到的结果与实际会存在一定误差.

玉屏侗族自治县19413587757: 在oracle中按要求统计行数,怎么运用sum和count函数? -
边剑凯兰: 1、首先在oracle中avg函数,使用聚合函数在计算平均值时,会报空值排除在外. 2、刚才在计算的时候结果是550,而comm列的总各为2200 所以计算平均时是只计算了除了空值的行. 3、需要注意的是,avg函数不能单独使用在where条件中不然会报如下错误. 4、如果想要查询出大于平均值的结果,需要使用group by ...having 子句. 5、然后用count函数用来统计列的总行数,就完成了.

玉屏侗族自治县19413587757: oracle 中 sum 如何使用,
边剑凯兰: sum是求和函数 例:select sum(列名) from 表名 意思是计算该列的总和!

玉屏侗族自治县19413587757: Oracle中的SQL查询语句:根据同一张表中的某一字段的不同条件分别求另一字段的和. -
边剑凯兰: select 部门,sum(decode(正负,'Y',分值,0)) 正分,sum(decode(正负,'N',分值,0)) 负分 group by 部门

玉屏侗族自治县19413587757: ORACLE中如何获取SUM? -
边剑凯兰: select (SELECT SUM(VALUE) FROM A WHERE TYPE=1)+ (SELECT SUM(VALUE) FROM B WHERE TYPE=1) as total from dual;

玉屏侗族自治县19413587757: oracle中怎样用一个sql语句根据同一表中不同字段的条件查询该表中另一字段中不同的值 -
边剑凯兰: 首先你这里的不同字段 应该有个优先级别,类似先判断哪个字段然后判断哪个字段.. 如果仅仅以字段 和 字段值 来作为条件 用DECODE 套 DECODE 直到符合你的逻辑需求. 如果牵扯到两个字段值的比较 例如 如果字段A等于字段B则显示XXX 这种判断请使用NULLIF配合DECODE也可以用WHEN CASE (9以前可能不支持NULLIF)如果是模糊比较例如 字段A 大于字段B 需要更多的函数来判断 常用的有 SIGN..通过加减法之后的结果来判断两个字段大小.

玉屏侗族自治县19413587757: oracle数据库中怎样依据成绩实现排名 -
边剑凯兰: 首先,来构造一些数据 drop table test; create table test (name varchar2(10),account number(5) ); insert into test values ('张三','5'); insert into test values ('王五','10'); insert into test values ('小二','10'); insert into test values ('李四'...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网