如何计算统计值 的百分比呢?

shiter
人工智能领域优质创作者
博客专家认证
2018-06-21 12:23:07
加精
如何计算统计值 的百分比呢?
...全文
4045 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
riven2011 2019-10-08
  • 打赏
  • 举报
回复
引用 4 楼 桃花岛黄岛主 的回复:

select ratio_to_report(SHULIANG) over () zb ,t.* from t


这个就是最简单的
AHUA1001 2019-10-07
  • 打赏
  • 举报
回复
直接执行这个 WITH T AS ( SELECT 'V' STATUS,41 SHULIANG FROM DUAL UNION ALL SELECT 'C' STATUS,699 SHULIANG FROM DUAL UNION ALL SELECT 'D' STATUS,19 SHULIANG FROM DUAL UNION ALL SELECT 'J' STATUS,172 SHULIANG FROM DUAL) SELECT T.*,SHULIANG/SUM(SHULIANG) OVER(ORDER BY 1 )*100 "百分百(实际值)", ROUND(SHULIANG/SUM(SHULIANG) OVER(ORDER BY 1 )*100,2) "百分百(保留两位小数)" FROM T ;
qq_40150322 2018-07-05
  • 打赏
  • 举报
回复
先看下再说,不过应该是不错的
huyue2019 2018-06-24
  • 打赏
  • 举报
回复
数据在哪里啊,我看不到
NinjaYinJey 2018-06-22
  • 打赏
  • 举报
回复
select a,(b / (select sum(b) from t)) from t
老王就是我 2018-06-22
  • 打赏
  • 举报
回复
sum不就行了?
  • 打赏
  • 举报
回复
应该sum()over()能搞
shiter 2018-06-21
  • 打赏
  • 举报
回复
"STATUS","SHULIANG"
"V","41"
"C","699"
"D","19"
"J","172"

比如我想计算数量这一列占所有数量的百分比,41/sum(shuliang), sql 怎么写啊,老报错啊,求大牛
nayi_224 2018-06-21
  • 打赏
  • 举报
回复
41/sum(shuliang) over() ?
shiter 2018-06-21
  • 打赏
  • 举报
回复
我是想问标准sql 怎么写?
桃花岛黄岛主 2018-06-21
  • 打赏
  • 举报
回复

select ratio_to_report(SHULIANG) over () zb ,t.* from t
shiter 2018-06-21
  • 打赏
  • 举报
回复
引用 2 楼 baidu_36457652 的回复:
不是吧,你把数据贴出来瞅瞅

楼上就是数据啊
  • 打赏
  • 举报
回复
不是吧,你把数据贴出来瞅瞅
卖水果的net 2018-06-21
  • 打赏
  • 举报
回复

SQL>
SQL> create table test(s varchar(10), v int);
Table created
SQL> begin
2 insert into test values('V','41');
3 insert into test values('C','699');
4 insert into test values('D','19');
5 insert into test values('J','172');
6 end;
7 /
PL/SQL procedure successfully completed
SQL> col v format a10;
SQL> -- 大数据量下,方法二有优势
SQL> select s, v, v * 1.0 / sum(v) over() V1 from test;
S V V1
---------- ---------- ----------
V 41 0.04403866
C 699 0.75080558
D 19 0.02040816
J 172 0.18474758
SQL> select s, v, v * 1.0 / (select sum(v) from test) V2 from test;
S V V2
---------- ---------- ----------
V 41 0.04403866
C 699 0.75080558
D 19 0.02040816
J 172 0.18474758
SQL> drop table test purge;
Table dropped

SQL>
nayi_224 2018-06-21
  • 打赏
  • 举报
回复
select t.*, t.SHULIANG / (select sum(SHULIANG) from t) from t;
select t.*, t.SHULIANG / t2.su from t, (select sum(SHULIANG) su from t) t2;

标准sql不清楚,不过这两种写法应该很通用。
xiaocang0510 2018-06-21
  • 打赏
  • 举报
回复
select STATUS ,SHULIANG,41/sum(shuliang) over() from 表
shiter 2018-06-21
  • 打赏
  • 举报
回复
引用 6 楼 nayi_224 的回复:
41/sum(shuliang) over() ?


引用 7 楼 baidu_36457652 的回复:
应该sum()over()能搞


引用 8 楼 wmxcn2000 的回复:
可以用 sum() over() ,也可以使用一个子查询计算出这个总计。


请问标准sql 有over函数么?能否用标准sql 解决这个问题,子查询么?
卖水果的net 2018-06-21
  • 打赏
  • 举报
回复
可以用 sum() over() ,也可以使用一个子查询计算出这个总计。
通过性能监控工具nmon的学习,清楚的了解Linux服务器资源CPU、磁盘、内存、网络、进程之间的关联,了解nmon监控结果的字段的含义以及影响,更重要的是通过熟悉监控结果中字段数据的由来,理清性能测试的分析思路,学会性能测试的分析方法。 课程内容:第一章:课程简介课程介绍课程大纲第二章:nmon介绍nmon简介nmon下载nmon安装nmon屏幕统计-交互模式nmon数据统计-数据收集模式nmon进程关闭nmon分析工具nmon数据文件解析第三章:nmon数据分析SYS_SUMM【系统资源汇总】AAA【服务器基本信息】BBBP【Linux执行的命令和结果】CPU_ALL【所有CPU数据的概述】CPU_SUMM【每个CPU的整体占用情况】CPU001【CPU001的每个时间点占用情况】DISK_SUMM【磁盘的吞吐量和IOPS】DISKBSIZE【磁盘块信息】DISKBUSY【磁盘的繁忙情况】DISKREAD【磁盘的读取操作速率】DISKXFER【磁盘的I/0传输速率】JFSFILE【JFS文件空间使用百分比】MEM【内存】VM【虚拟内存】NET【网络数据传输速率】NETPACKET【网络数据包】PROC【进程】TOP【PID进程相关的CPU/内存等】 课程提供的下载资料:包含通过nmon收集的Linux服务器资源信息ecs-lc_220715_1019.nmon文件,大家在没有Linux服务器的情况下,可以通过对这个文件进行nmon数据解析和数据分析的学习。 

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧