【DA】-【SQL】-【窗口函数学习】

7 篇文章 0 订阅
0.概述
1.SQL窗口函数作用?
  • 面向各组内排序的业务需求,例如每个部门按业绩排名每个部门排名Top N的员工等。
2.SQL窗口函数定义?
  • 窗口函数又叫OLAP函数(Online Analytical Processing,联机分析处理),虽然不太清楚为什么,但是它的作用是能够实时处理数据库当中的数据。
3.SQL窗口函数的语法?

<窗口函数> over (partition by <用于分组的列> order by <用于排序的列>)。

  • 以第1部分的栗子“每个部门按业绩排名”为例,<用于分组的列>则是部门,<用于排序的列>则是业绩
  • <窗口函数>分为两种:一般聚合函数和专用窗口函数。
  • 聚合函数:sum(), avg(), count(), max(), min();
  • 专用函数:rank(), dense_rank(), row_number(), ntile()。
1)row_number()对于每条记录都给出一个排序序号,如123;
(2)rank()函数对排序列值相同的记录给出相同的排序序号,如122;
(3)dense_rank()和rank()类似,都会给值相同的记录以相同序号,但是区别于rank()的连续分配1,2,2,3,3,3;dense_rank()给出的结果会是1,2,2,4,4,4跳跃序号结果。
(4)举个栗子:
百米赛跑成绩为张三10.00秒,李四10.00秒,王二麻子10.01。
那么按照row_number()排序序号是-张,李,王:123;
rank()排序序号是-张,李,王:112;
dense()排序序号是-张,李,王:113.
按照row_number()冠亚季军各有归属;按照rank()有两位并列冠军,一位亚军;
按照dense_rank()也是两位并列冠军,没有亚军(瞎说一下举个例子而已),只有季军。
(5)ntile()函数则是将数据分区,
比如ntile(1),那么-张,李,王:111;ntile(2),那么-张,李,王:112;
ntile(3),那么-张,李,王:123

备注:窗口函数原则上智只能写在select子句当中

4.SQL窗口函数的应用?
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值