oracle语法知识

oracle常用sql

获取年份

方法1:

Select to_number(to_char(sysdate,'yyyy')) from dual;

方法2:

Select Extract(year from sysdate) from dual

获取月份

方法1:例如 2022-02-02 获取到的结果为 02

Select to_number(to_char(sysdate,'mm')) from dual;

方法2:例如 2022-02-01 00:00:00 获取到的结果为 02

Select Extract(year from sysdate) from dual

方法3:例如 2022-02-09 00:00:00 获取到的结果为 2022-02-01 00:00:00

Select to_date(sysdate,'yyyy-mm') from dual

取多个数字中的最大值最小值(不同的字段中)

最大值:greatest(args1,args2.……)

selet  greatest(num1,num2) from TEST;

最小值least(args1,args2.……)

selet  least(num1,num2) from TEST;

同一个字段中获取最大值最小值

最大值:max()
最小值:min()

selet  max(age) from users group by user_id;
selet  min(age) from users group by user_id;

获取中位数

median()

selet  median(age) from users group by user_id;

向上取整

ceil()
例如 1.12 计算结果为2

selet  median(1.12) from users ;
向下取整

floor()

转到字符串

to_char:

获取第二大值

使用开窗函数获取第二大值

select * from (
select id,列名,row_number() over(partition by id order by 字段名 desc) as r_id from 表名
)

排序并实现当前数据-后 N 行的数据 (lead) 前 N 行的数据 (lag)

select 列名 -lead(字段名, num, defaultvalue) over(partition by 字段名 order by 排序的字段名 desc) res from table'

lead(field, num, defaultvalue) field 需要查找的字段,num 往后查找的 num 行的数据,defaultvalue 没有符合条件的默认值

后 N 行的数据 (lead)

前 N 行的数据 (lag)

注意事项:

WHERE 1=2 指查询的结果为空,若写成 WHERE 1=1 ,则会将整个表结构及其表数据复制过去

四舍五入 round()

round(number,4):数值取值,四舍五入;

数值截取

trunc():数值截取,非四舍五入

去重

distinct():去重;

替换

decode(替换);

转行

listagg():转行

length():字符串长度;

concat():字符串拼接;

substr():字符串截取

sql取交集,并集,差集

union all:表示不去掉重复数据
union:表示去掉重复数据
intersect:表示交集,共有的数据
minus:表示差集,先查出第一个,然后减去第二个的数据

case …when

case 列名
when 条件值1 then 选项1
when 条件值2 then 选项2.......
else 默认值 end
case
when 列名=条件值1 then 选项1
when 列名=条件值2 then 选项2.......
else 默认值 end
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值