阿里云大数据ACP认证知识点梳理6——基础SQL语句(内建函数、窗口函数规则、隐式转换规则)...

数学函数与窗口函数详解
本文深入探讨了MaxCompute SQL中的数学函数如abs、ceil、floor、round等的使用方法及注意事项,同时详细介绍了窗口函数的语法和应用场景,如dense_rank函数在分组排序中的应用,以及count函数在数据统计中的作用。
abs(null)=null
abs(-1)=1
abs(-1.2)=1.2
abs("-2")=2.0
abs(122320837456298376592387456923748)=1.2232083745629837e32

注:当number为Double、Bigint或Decimal类型时。输入为Bigint,返回Bigint。输入为Double,返回Double类型。输入为Decimal,返回Decimal类型。若输入为String类型,会隐式转换为Double类型后参与运算,其它类型抛异常。若输入为null,则返回null。

ceil(1.1)=2
ceil(-1.1)=-1

注:向上取整,函数返回不小于输入值value的最小整数。Double类型或Decimal类型,若输入为String类型或Bigint类型,会隐式转换到Double类型后参与运算,其他类型抛异常。返回Bigint类型。任意一个参数输入为null,则返回null。

floor(1.2)=1
floor(1.9)=1
floor(0.1)=0
floor(-1.2)=-2
floor(-0.1)=-1
floor(0.0)=0
floor(-0.0)=0

注:向下取整,函数返回不大于number的最大整数值。Double类型或Decimal类型,若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。返回Bigint类型。若number为null,则返回null。

select rand() from dual;
select rand(1) from dual;

注:该函数以seed为种子,返回Double类型的随机数,返回值区间是的0~1。可选参数,Bigint类型,随机数种子,决定随机数序列的起始值。返回Double类型

round(125.315)=125.0
round(125.315, 0)=125.0
round(125.315, 1)=125.3
round(125.315, 2)=125.32
round(125.315, 3)=125.315
round(-125.315, 2)=-125.32
round(123.345, -2)=100.0
round(null)=null
round(123.345, 4)=123.345
round(123.345, -4)=0.0

注:Double类型或Decimal类型。若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。四舍五入计算到小数点后的位置,其他类型参数会引发异常。如果省略表示四舍五入到个位数,默认值为0。返回Double类型或Decimal类型。若number或Decimal_places为null,则返回null。负数会从小数点向左开始计数,并且不保留小数部分。如果Decimal_places超过了整数部分长度,返回0。

窗口函数

MaxCompute SQL中可以使用窗口函数进行灵活的分析处理工作,窗口函数只能出现在select子句中,窗口函数中不要嵌套使用窗口函数和聚合函数,窗口函数不可以和同级别的聚合函数一起使用。

目前在一个MaxCompute SQL语句中,最多可以使用5个窗口函数。

window_func() over (partition by [col1,col2…]
[order by [col1[asc|desc], col2[asc|desc]…]] windowing_clause)

注:语法声明格式。

select deptno, ename, sal, dense_rank() over (partition by deptno order by sal desc) as nums;
注:将所有职工根据部门分组,每个组内根据SAL做降序排序,获得职工自己组内的序号。

count语句

select user_id,count(user_id) over (partition by user_id) as count
from test_src;

注:该函数用于计算计数值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值