IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> SQL-一些开窗函数使用场景(OVER+lag) -> 正文阅读

[大数据]SQL-一些开窗函数使用场景(OVER+lag)

目录

?????OVER()函数

例子

lag()函数和lead()函数


?

?????OVER()函数

OVER(PARTITION BY Year ORDER BY Month DESC )
数据会根据Year字段进行分组,按照Month字段降序排列

OVER()利用Year进行分组,然后利用Month进行组内排序?

Alt

?加一些分析函数

比如row_number():可以在over函数执行的基础上对Month进行不重复排序

Alt

比如在over函数基础上加Rank()函数?,就是随机那种了Month的话就会重复排序,并且over函数不相同的month——>不会保持原本的排序,比如1后面就直接56了

Alt

?如果想要保持顺序,我们可以用Dense_rank()函数将后面的元素进行跟序排序

Alt

?按班级进行分组,然后按成绩进行排序

sum(score) over(partition by class_id order by score desc)
根据班级ID进行分组,成绩降序排列,再将成绩依次递增

例子

每个部门进行薪水排名——>扩展:取每个部门的第一个或者最后一名

select department_id,rank() over(partition by department_id order by salary) from employees

查询每个学生的分数最高的前3门课程

 SELECT *
     FROM(
        SELECT stu_id,
        ROW_NUMBER() OVER (PARTITION BY stu_id ORDER BY score DESC) AS score_
order,
        lesson_id, score
        FROM t_score) t
    WHERE score_order <= 3
     ;

lag()函数和lead()函数

?子查询可以得到前一条数据通过lag(num,1)然后lag(num,2)得到前两条数据以id进行分组,如果当前的num等于前两个就查询

#编写一个 SQL 查询,查找所有至少连续出现三次的数字。
#利用解决求连续登录问题的思路,使用Lag()开窗函数
select distinct t.num as ConsecutiveNums
from (
select  *,
       lag(num,1) over (order by id) last1,
       lag(num,2) over (order by id) last2
from Logs) t
where t.num=t.last1 and t.last1=t.last2;

场景二:查找与昨天相比,温度更高的所有日期的id

select id from (
   select id,recordDate,temperature,
       LAG(temperature,1) OVER (order by recordDate) as r
   from weather) as t
where temperature>r and r is not null

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-11-05 00:34:29  更:2022-11-05 00:39:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年3日历 -2025/3/4 7:03:13-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码