扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
SQL select to_char( 0.191 * 100) || '%' AS percent_zy_js from dual;
成都创新互联客户idc服务中心,提供遂宁联通机房、成都服务器、成都主机托管、成都双线服务器等业务的一站式服务。通过各地的服务中心,我们向成都用户提供优质廉价的产品以及开放、透明、稳定、高性价比的服务,资深网络工程师在机房提供7*24小时标准级技术保障。
PERCENT_ZY
----------
19.1%
根据上面的运行结果。
你的 SQL 可以修改为:
to_char( (sum(zy_js_to_rs)/sum(enterprise_to_rs)) * 100 ) || '%' AS percent_zy_js
1,成本处理器处理需要计算成本的库存事务,根据库存事务生成CTCD
数据
2,根据CTCD数据生成CACD数据
如果CTCD中存在数据则,
CACD.actual_cost = CTCD.transaction_cost
CACD.prior_cost = 0
CACD.new_cost = null
否则,使用默认成本(当前平均成本)
如果CLCD中有数据,取CLCD中的数据插入CACD表中
CACD.actual_cost = CLCD.item_cost
CACD.prior_cost = CLCD.item_cost
CACD.new_cost = CLCD.item_cost
如果CLCD中没有数据(第一次发生库存事务),插入一条记录到CACD中
CACD.actual_cost = 0
CACD.prior_cost = null
CACD.new_cost = 0这种情况一般不会发生
3,根据是否使用默认成本
如果否的话,对CACD中记录进行更新,计算CACD.new_cost物料新成本,
和CACD.variance_amount差异金额
如果是的话,平均成本无需重新计算,系统直接更新CQL中的数量
4,更新CST_ITEM_COSTS中数据,计算整个组织的平均成本
实现代码:
ELECT(CASE WHEN db_psndoc.age=30 THEN '30岁以上'
WHEN db_psndoc.age30 THEN '30岁及以下' END)
ranges, COUNT(*) rs ,100*round(COUNT(*)/SUM(COUNT(*))
OVER(),4)||'%' percent FROM bd_psnd
GROUP BY CASE
WHEN bd_psndoc.age=30 then '30岁及以下'
WHEN db_psndoc.age=30 THEN '30岁以上'
END
扩展资料
sum(..) over(..)用法分析:
sum(…) over( ),对所有行求和;
sum(…) over( order by … ), 连续求和;
sum(…) over( partition by… ),同组内所行求和;
sum(…) over( partition by… order by … ),同第1点中的排序求和原理,只是范围限制在组内。
over不能单独使用,要和分析函数:rank(),dense_rank(),row_number(),sum()等一起使用。
over函数的参数:over(partition by columnname1 order by columnname2)
含义,按columname1指定的字段进行分组排序,或者说按字段columnname1的值进行分组排序。
例子:
select deptno,ename,sal,
sum(sal) over (partition by deptno order by ename) 部门连续求和,--各部门的薪水"连续"求和
sum(sal) over (partition by deptno) 部门总和, -- 部门统计的总和,同一部门总和不变
select sum(col2)/count(*) from
(select col1, case when col2=1 then 1 else 0 end col2 from test1) group by col1;
SQL select sum(col2)/count(*) from (select col1, case when col2=1 then 1 else 0 end col2 from test1) group by col1;
SUM(COL2)/COUNT(*)
------------------
.5
.75
-----------------------------------补充-----------------------------------
如果要加上百分比的,做些小处理即可
SQL select (sum(col2)*100/count(*))||'%' from
(select col1, case when col2=1 then 1 else 0 end col2 from test1) group by col1;
(SUM(COL2)*100/COUNT(*))||'%'
-----------------------------------------
50%
75%
用分析函数就可以了
select name ,quantity/sum(quantity)over(order by name) from 表名
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流