[Oracle]高效的SQL语句之分析函数(一)–sum()

实际应用中我们可以通过sum()统计出组中的总计或者是累加值,具体示例如下:

1.创建演示表

 create   table  emp
 as
 select   *   from  scott.emp;

 alter   table  emp
 add   constraint  emp_pk
 primary   key (empno);

 create   table  dept
 as
 select   *   from  scott.dept;

 alter   table  dept
 add   constraint  dept_pk
 primary   key (deptno);

2. sum()语句如下:

 select  deptno,
       ename,
       sal,
   -- 按照部门薪水累加(order by改变了分析函数的作用,只工作在当前行和前一行,而不是所有行)
         sum (sal)  over  (partition  by  deptno  order   by  sal) CumDeptTot,  
        sum (sal)  over  (partition  by  deptno) SalByDept,   -- 统计一个部门的薪水
         sum (sal)  over  ( order   by  deptno,sal) CumTot,   -- 所有雇员的薪水一行一行的累加
         sum (sal)  over  () TotSal   -- 统计总薪水
    from  emp
  order   by  deptno, sal

3. 结果如下:

 10    MILLER    1300.00    1300    8750    1300    29025
10    CLARK    2450.00    3750    8750    3750    29025
10    KING    5000.00    8750    8750    8750    29025
20    SMITH    800.00    800    10875    9550    29025
20    ADAMS    1100.00    1900    10875    10650    29025
20    JONES    2975.00    4875    10875    13625    29025
20    SCOTT    3000.00    10875    10875    19625    29025
20    FORD    3000.00    10875    10875    19625    29025
30    JAMES    950.00    950    9400    20575    29025
30    WARD    1250.00    3450    9400    23075    29025
30    MARTIN    1250.00    3450    9400    23075    29025
30    TURNER    1500.00    4950    9400    24575    29025
30    ALLEN    1600.00    6550    9400    26175    29025
30    BLAKE    2850.00    9400    9400    29025    29025

 

好的代码像粥一样,都是用时间熬出来的

推荐这些技术文章:

Oracle之增、删、改、查

结构化查询语言 (Structured Query Language, SQL)
SQL的组成:

数据操作语言(DML)

    对数据进行查询、插入、删除和修改等操作,例如SELECT、INSERT、UPDATE、DELETE等。

查询语言(QL)

    也可以将对数据的查询操作称为查询语言。按照指定的组合、条件表达式或排序检索已存在的数据库中数据,不改变数据库中数据。例如SEL...

Oracle全部实验

1. 日志文件
show user
desc dba_data_files
select file_name, tablespace_name, bytes from dba_data_files;
select file#, name, checkpoint_change# from v$datafile;
desc V$log;
desc V$logfile;
select group#, ...

Oracle数据之事务

视图与索引与序列
视图
致命三连

是什么:建立在结果集与表之间的虚拟表

为什么:可以简化sql语句,对常用的sql语句进行封装

怎么用:create or replace view 视图名 as select语句 [with read only];
select * from 视图名;

分类

物理视图 : 真是存储数据

逻辑视图 : 不会真是存储数据,数据来资源数据源 ...

Oracle:存储过程(二)

一:存储过程中其常用的基础语法总结
(1)存储过程结构:  AS/IS在存储过程(PROCEDURE)和函数(FUNCTION)中没有区别;在视图(VIEW)中只能用AS不能用IS;在游标(CURSOR)中只能用IS不能用AS。   

CREATE OR REPLACE PROCEDURE 存储过程名字 ( 参数1 IN NUMBER, 参数2 IN NUMBER ) I...

Oracle 系统函数

 
函数名称
返回值类型
说明
示例

字符串函数
ascii(str)
number
返回str首字母的ASCII码

select ascii('A') from dual; --65select ascii('ab') from dual; --97 

chr(num)
char
返回ASCII码为num的字符

select chr(65) from d...

SQL语句(select)

select id as 学号 from table  :在之后的显示中,将id改为学号。 as可以省略不写
select * from table 查所有
select distinct id from table 查询有重复内容时,避免重复
select id from table where 学院=“计算机”或者age>20或者age between 20 and 23 等...

SQL自定义函数

--.自定义函数--语法:

CREATE OR REPLACE FUNCTION FUN_函数名(参数1 数据类型,参数2,[IN|OUT|IN OUT] 数据类型……)
RETURN + 返回的数据类型
IS|AS
BEGIN
--逻辑体
--里面必须要有一个RETURN子句
END;

--对比存储过程

CREATE OR REPLACE PROCEDURE SP_存储过程名(参数) I...

Oracle 游标使用全解

-- 声明游标;CURSOR cursor_name IS select_statement

--For 循环游标
--(1)定义游标
--(2)定义游标变量
--(3)使用for循环来使用这个游标
declare
--类型定义
cursor c_job
is
select empno,ename,job,sal
from...

Oracle SQL语句优化34条

非常好用的SQL语句优化34条
  1)选择最有效率的表名顺序(只在基于规则的优化器中有效): ORACLE 的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基
  础表。如果有3个以上的表连接查询, 那就需要选择交叉表(intersect...

重点---Oracle中的 row_number() over (partition by order by ) 用法

oracle 里面经常这样用 
select col1,col2..., row_number() over (partition by colx order by coly) from table_name;;
这句话的意思是把表中的数值按照colx 分组,每一组内部按照coly排序,同时 row_number()返回排序之后该记录在改组内部的序号。
比如我们知道有emp表如下:

...

文章标题:[Oracle]高效的SQL语句之分析函数(一)–sum()
文章链接:https://www.dianjilingqu.com/4626.html
本文章来源于网络,版权归原作者所有,如果本站文章侵犯了您的权益,请联系我们删除,联系邮箱:saisai#email.cn,感谢支持理解。
THE END
< <上一篇
下一篇>>