[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
好的代码像粥一样,都是用时间熬出来的
推荐这些技术文章:
结构化查询语言 (Structured Query Language, SQL)
SQL的组成:
数据操作语言(DML)
对数据进行查询、插入、删除和修改等操作,例如SELECT、INSERT、UPDATE、DELETE等。
查询语言(QL)
也可以将对数据的查询操作称为查询语言。按照指定的组合、条件表达式或排序检索已存在的数据库中数据,不改变数据库中数据。例如SEL...
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#, ...
视图与索引与序列
视图
致命三连
是什么:建立在结果集与表之间的虚拟表
为什么:可以简化sql语句,对常用的sql语句进行封装
怎么用:create or replace view 视图名 as select语句 [with read only];
select * from 视图名;
分类
物理视图 : 真是存储数据
逻辑视图 : 不会真是存储数据,数据来资源数据源 ...
一:存储过程中其常用的基础语法总结
(1)存储过程结构: AS/IS在存储过程(PROCEDURE)和函数(FUNCTION)中没有区别;在视图(VIEW)中只能用AS不能用IS;在游标(CURSOR)中只能用IS不能用AS。
CREATE OR REPLACE PROCEDURE 存储过程名字 ( 参数1 IN NUMBER, 参数2 IN NUMBER ) I...
函数名称
返回值类型
说明
示例
字符串函数
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...
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 等...
--.自定义函数--语法:
CREATE OR REPLACE FUNCTION FUN_函数名(参数1 数据类型,参数2,[IN|OUT|IN OUT] 数据类型……)
RETURN + 返回的数据类型
IS|AS
BEGIN
--逻辑体
--里面必须要有一个RETURN子句
END;
--对比存储过程
CREATE OR REPLACE PROCEDURE SP_存储过程名(参数) I...
-- 声明游标;CURSOR cursor_name IS select_statement
--For 循环游标
--(1)定义游标
--(2)定义游标变量
--(3)使用for循环来使用这个游标
declare
--类型定义
cursor c_job
is
select empno,ename,job,sal
from...
非常好用的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表如下:
...
文章链接:https://www.dianjilingqu.com/4626.html
本文章来源于网络,版权归原作者所有,如果本站文章侵犯了您的权益,请联系我们删除,联系邮箱:saisai#email.cn,感谢支持理解。