oracle笔记

Oracle分页

rownum伪列

SELECT * FROM   

(  

SELECT A.*, ROWNUM RN   

FROM (SELECT * FROM TABLE_NAME) A   

WHERE ROWNUM <= 40  

)  

WHERE RN >= 21

 

注意:未查询出数据时,rownum使用> ,>=, =返回控数据

 

Oracle with as 用法

 

with as语法
–针对一个别名
with tmp as (select * from tb_name)

–针对多个别名
with
   tmp as (select * from tb_name),
   tmp2 as (select * from tb_name2),
   tmp3 as (select * from tb_name3),
   …

例子:

with

     e as (select * from scott.emp),

     d as (select * from scott.dept)

select * from e, d where e.deptno = d.deptno;

 

Oracle case when then else end应用

语法:

CASE search_expression

WHEN expression1 THEN result1

WHEN expression2 THEN result2

...

WHEN expressionN THEN resultN

ELSE default_result

RND

 

使用case when 进行统计操作

 

SELECT to_char(DT.D, 'yyyy-MM-dd') d,

NVL(sum(case when T.CHECKIN_TYPE = 1 then 1 else 0 end),0) shigong,

NVL(sum(case when T.CHECKIN_TYPE = 2 then 1 else 0 end),0) guankong,

NVL(sum(case when T.CHECKIN_TYPE = 3 then 1 else 0 end),0) anjian

FROM date_temp DT

left join bs_checkin t

on dt.d = trunc(t.check_time) and t.sys_company_code = '${params.sysComCode}' and t.check_time is not null

GROUP BY DT.D

ORDER BY DT.D

 

 

 

 

oracle的decode函数使用

decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值)

该函数的含义如下:

IF 条件=值1 THEN

RETURN(翻译值1)

ELSIF 条件=值2 THEN

RETURN(翻译值2)

......

ELSIF 条件=值n THEN

RETURN(翻译值n)

ELSE

RETURN(缺省值)

END IF

 

decode(字段或字段的运算,值1,值2,值3)

例子:select sum(decode(性别,男,1,0)),sum(decode(性别,女,1,0)) from 表

 partition by用法

partition by关键字是分析性函数的一部分,它和聚合函数不同的地方在于它能返回一个分组中的多条记录,而聚合函数一般只有一条反映统计值的记录,partition by用于给结果集分组,如果没有指定那么它把整个结果集作为一个分组,分区函数一般与排名函数一起使用

一、分区函数Partition By的与row_number()的用法

select *,row_number() over(partition by Grade order by Score desc) as Sequence from Student

 

 

二、分区函数Partition By与排序rank()的用法

1、分班后按学生成绩排名 该语句是对分数相同的记录进行了同一排名,例如:两个80分的并列第2名,第4名就没有了

select *,rank() over(partition by Grade order by Score desc) as Sequence from Student

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值