show functions; --查看所有的函数

desc function functionName; -查看某个具体的函数如何使用

1.current_date(); #当前系统日期 格式:"yyyy-MM-dd"
2.current_timestamp(); #当前系统时间戳: 格式:"yyyy-MM-dd HH:mm:ss.ms"
3.unix_timestamp(); #当前系统时间戳 格式:距离1970年1月1日0点的秒数。

4.from_unixtime #时间戳转日期函数

5.#计算时间差函数
datediff() #数据是前面的时间减去后面的时间,相差的天数
months_between() #前面的时间减去后面时间的月数 ,可以精确到小数

6.date_add() #日期相加
7.date_sub #日期相减
8.add_months() #月份相加
9.year()、month()、day()、hour()、minute()、second() # 日期时间分量函数

10.last_day()、next_day() # 日期定位函数
11.to_date() #字符串转日期
12.date_format() #将日期转为字符串

窗口函数(Window Functions)是 SQL 中的一种特殊类型的函数,用于在一组相关行上进行计算,而不是在整个表上进行计算。窗口函数允许你在不改变数据集的情况下,对数据进行聚合和排序等操作。这使得窗口函数在处理复杂的数据分析任务时非常有用。
order.txt
建表并且加载数据
在over窗口中进行分组,对某一字段进行分组统计,窗口大小就是同一个组的所有记录
语法: over(distribute by colname[,colname.....])
需求:查看顾客的购买明细及月购买总额
select *,sum(cost) over(distribute by substr(orderdate,1,7) ) from t_order ;

sort by子句会让输入的数据强制排序 (强调:当使用排序时,窗口会在组内逐行变大)
语法: over([distribute by colname] [sort by colname [desc|asc]])
需求:查看顾客的购买明细及每个顾客的月购买总额,并且按照日期降序排序
select *,sum(cost) over(distribute by name,month(orderdate) sort by orderdate desc ) from t_order ;

可以使用partition by + order by 组合来代替distribute by+sort by组合
select *,sum(cost) over(partition by name,month(orderdate) order by orderdate desc ) from t_order ;



ntile 是Hive很强大的一个分析函数。可以看成是:它把有序的数据集合 平均分配 到 指定的数量(num)个桶中, 将桶号分配给每一行。如果不能平均分配,则优先分配较小编号的桶,并且各个桶中能放的行数最多相差1

ag返回当前数据行的前第n行的数据
语法:lag(colName,n[,default value]): 取字段的前第n个值。如果为null,显示默认值
lead返回当前数据行的后第n行的数据
需求:查询顾客上次购买的时间
select * ,lag(orderdate,1) over( partition by name order by orderdate ) from t_order;

first_value 取分组内排序后,截止到当前行,第一个值
last_value 分组内排序后,截止到当前行,最后一个值

stu_score.txt
建表加载数据
load data local inpath '/home/hivedata/stu_score.txt' overwrite into table stu_score;
row_number从1开始,按照顺序,生成分组内记录的序列,row_number()的值不会存在重复,当排序的值相同时,按照表中记录的顺序进行排列
需求:获取每次考试的排名情况

生成数据项在分组中的排名,排名相等会在名次中留下空位
需求:获取每次考试的排名情况

生成数据项在分组中的排名,排名相等会在名次中不会留下空位
需求:对每个班级的每次考试按照考试成绩倒序
select *,dense_rank() over(partition by classno order by score desc) from stu_score;

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ri-ji/58486.html