SQLHQL中开窗函数详细讲解
⼀、前⾔
快速排序算法的伪代码本⽂将从⼀道⾯试题⼊⼿,以⼀种易⼈理解的⽅式,将对SQL窗⼝函数部分进⾏详细讲解。
开窗函数,顾名思义,就是从现有的表上,额外多加⼀列出来展⽰,这也是从视觉上来讲最直观的体验。
⼆、思维拓展
注:MYSQL中⽆开窗函数
开窗函数分为两⼤类:
1、分组聚合开窗函数
例. sum() over(partition by ... ) 分组聚合,⽆order by
2、分组排序开窗函数(具体不同将在另⼀篇博⽂中详细说明)
例.rank() over (partition by ... order by ...) 计算排序 (1 2 3 3 5)
dense_rank() over (partition by ... order by ...) 密集排序 (1 2 3 3 4)
row_number() over (partition by ... order by ...) ⾏序排序 (1 2 3 4 5)
三、⾯试题
从以下格式的表中,筛选出每⽇每个URL访问的第三个⽤户
二叉树中序遍历python元数据格式:URL USER TIME(时间戳)
四、实现
1、time时间戳转换成时间
2、截取转换后的time的yyyy-mm-dd(substr或left实现)
3、获取当前⽇期,转换成时间,截取yyyy-mm-dd
4、第⼀个查询查询当天的所有url、user、time通过where 转换后的时间戳⽇期 = 当前的时间戳⽇期
5、使⽤分组排序开窗函数,获得url、⽤户。where 排名为3条件
有如下c语言程序段 若数组a
代码部分(由于同⼀天中可能会有⽤户在同⼀时间同时进⾏访问):
select url,user
(select
springoneuser,url, dense_rank() over(partition by url order by time asc) as rank
from
(select
url,user,time
FROM
a
汇编语言王爽期末考试试卷where substr(from_unixtime(time),0,10)=substr(from_unixtime(unix_timestamp()),0,10))Current_data ) // ---每天时间where rank = 3
mysql面试题sql优化
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论