用oracle语句计算百分比

来公司第一天,也没什么事干,经理说今天需要把报表做出来,需要写几个oracle语句,用来查询各类别下的人

员数量和占总人数比例。如下图

统计人数到不是问题,关键是比例不知道该怎么去做,上网查了好几个方式都尝试过了,但还是没能弄出来,一

下午的时间全花在解决这个问题上了,最后在要下班的时候,我突然看到了oracle中聚合函数sum() over的使用,最

终使得问题得到了解决。

实现代码:

SELECT(CASE WHEN db_psndoc.age<=30 THEN '30岁以上'
WHEN db_psndoc.age>30 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用法:

参考链接:http://www.2cto.com/database/201209/157605.html

总结:

1、要学习的东西还有很多,知道什么有用很重要。

2、基础知识很重要,能用已知的探索未知的。

时间: 2024-08-02 06:55:21

用oracle语句计算百分比的相关文章

53个Oracle语句优化规则详解(转)

Oracle sql 性能优化调整  1. 选用适合的ORACLE优化器        ORACLE的优化器共有3种:a. RULE (基于规则)   b. COST (基于成本) c. CHOOSE (选择性)    设置缺省的优化器,可以通过对init.ora文件中OPTIMIZER_MODE参数的各种声明,如RULE,COST,CHOOSE,ALL_ROWS,FIRST_ROWS . 你当然也在SQL句级或是会话(session)级对其进行覆盖.    为了使用基于成本的优化器(CBO,

MySQL计算百分比方法介绍

根据相应条件抽出相应count数(myCount) 抽出总count数(totalCount) 计算百分比:myCount / totalCount * 100 四舍五入:使用ROUND函数ROUND(number,要保留的小数位),ROUND(myCount / totalCount * 100,1) 下面给出示例供参考: SELECT ROUND(T1.co/T2.totalCo*100,1)    FROM      (SELECT COUNT(*) AS co        FROM f

Oracle语句

Oracle语句-基本查询 --清屏 SQL> host cls --当前用户 SQL> show user USER 为 "SCOTT" --当前用户的表 SQL> select * from tab; --员工表的结构 SQL> desc emp --查询所有的员工信息 SQL> select * from emp; --设置行宽 SQL> show linesize linesize 80 SQL> set linesize  150 -

利用switch语句计算特定的年份的月份共有几天。

//利用switch语句计算特定的年份的月份共有几天. let year =2015 let month =2 //先判断闰年中二月份的情况 ifmonth ==2 { if (year %400 ==0||year %4 ==0 &&year %100 !=0) //闰年的二月份29天,非闰年的二月份是28天 { print("29天") }else { print("28天") } } else { //考虑其他两种情况 switchmonth

Oracle语句分类汇总

1.Oracle语句之数据定义语言(DDL) 1) CREATE TABLE   新建表 2) ALTER TABLE    修改表 3) TRUNCATE TABLE  清空表数据  举例:truncate table stu; 4) DROP TABLE      删除表 alter用法: 1.在表中新增字段: alter table stu add age int; 2.在表中删除字段: alter table stu drop column age; 3.对字段改名: alter tab

统计SQL语句耗时百分比

-- sql语句耗时百分比 declare @tmptb table(id int,name varchar(50),total_worker_time bigint,rate varchar(50),execute_count bigint) ;with cte1 as(select a.*,t.*from sys.dm_exec_query_stats across apply sys.dm_exec_sql_text(a.plan_handle) twhere t.dbid >= 5 ),

Excel计算百分比时分母为0的处理

作者:iamlaosong 实际工作中经常碰到百分比计算,但是,如果分母为0,则单元格显示#DIV/0!,可以用if函数进行判断(直接判断分母,或者用iserror(A1/B1)或isnumber(A1/B1)函数判断计算结果),这样就不会显示#DIV/0!,显示什么,可以根据需要设定,例如: =IF(B1<>0,A1/B1,0)     ' 分母为0时显示0 =IF(B1<>0,A1/B1,1)     ' 分母为0时显示1 =IF(B1<>0,A1/B1,"

oracle语句随笔

oracle语句随笔 dmp数据的导入. CREATE USER memsspc IDENTIFIED BY 123; --创建用户 GRANT CONNECT,RESOURCE,DBA TO memsspc; --赋值权限 --cmd 中导入命令 IMP memsspc/123@ORCL FILE=D:\yuanzhangliu_work\suzhou\spc.dmp FULL=Y;

oracle 语句创建表空间、用户、授权

/*分为四步 */ /*第1步:创建临时表空间 */ create temporary tablespace yuhang_temp tempfile 'D:\oracledata\yuhang_temp.dbf' size 50m autoextend on next 50m maxsize 20480m extent management local; /*第2步:创建数据表空间 */ create tablespace yuhang_data logging datafile 'D:\or