首页 > 其他分享 >3.窗口函数

3.窗口函数

时间:2023-04-01 22:01:32浏览次数:35  
标签:窗口 函数 over rank score 排名 80 排序

语法:

  select 排序函数/聚合函数 over (<partition by ...> 分区字段 order by 排序字段)      #说明:注意over后面有一个空格

说明:  

  partiton by是可选的。如果不使用partition by,那么就是将整张表作为一个集合,最后使用排序函数得到的就是每一条记录根据排序列的排序编号。排序函数主要有rank()、dense_rank、row_number,他们主要区别:

  • rank(): 对同一个字段排序,出现相同时,会并列排名,并且会出现排名间隙。
  • dense_rank() : 对同一个字段排序,出现相同时,会出现并列排名,排名连续的
  • row_number(): 对同一个字段排序,排名是联系的,即使出现相同,不会并列排名次

示例:

 1) 建表 

CREATE TABLE s_score (
  id int NOT NULL AUTO_INCREMENT,
  name varchar(20),
  score int NOT NULL DEFAULT 0,
  PRIMARY KEY (id)
);

 2)插入数据

INSERT INTO s_score  VALUES(1,'张三', 80),(2,'小明', 90),(3,'小红', 60),(4,'李四', 70),(5,'赵武', 80);

 3)查看

root@mysqldb 21:43:  [test]> select * from s_score;
+----+--------+-------+
| id | name   | score |
+----+--------+-------+
|  1 | 张三   |    80 |
|  2 | 小明   |    90 |
|  3 | 小红   |    60 |
|  4 | 李四   |    70 |
|  5 | 赵武   |    80 |
+----+--------+-------+
5 rows in set (0.00 sec)

这里我们看看用上面三个函数进行排名的显示,

SELECT NAME,score,
    RANK () over (ORDER BY score DESC) `rank`,
    ROW_NUMBER () over (ORDER BY score DESC) `row`,
    DENSE_RANK () over (ORDER BY score DESC) `dense`
FROM s_score;

+--------+-------+------+-----+-------+
| NAME   | score | rank | row | dense |
+--------+-------+------+-----+-------+
| 小明   |    90 |    1 |   1 |     1 |
| 张三   |    80 |    2 |   2 |     2 |
| 赵武   |    80 |    2 |   3 |     2 |
| 李四   |    70 |    4 |   4 |     3 |
| 小红   |    60 |    5 |   5 |     4 |
+--------+-------+------+-----+-------+
5 rows in set (0.01 sec)

rank 并列排名会出现排名空隙,dense_rank也会并列排名,但不会出现空隙,row_number是不会并列排名。

标签:窗口,函数,over,rank,score,排名,80,排序
From: https://www.cnblogs.com/zmc60/p/17279501.html

相关文章

  • 实验三 函数
    实验1.#include<stdio.h>#include<stdlib.h>#include<time.h>#include<windows.h>#defineN80voidprint_text(intline,intcol,chartext[]);//函数声明voidprint_spaces(intn);//函数声明voidprint_blank_lines(intn);//函数声明intma......
  • 对于数据链路层滑动窗口协议中窗口大小的总结
    3.4节中介绍了三种滑动窗口协议:1位滑动窗口协议、GBN协议、SR协议。1位滑动窗口协议本质上就是一种全双工的停等式协议,它的发送窗口和接收窗口大小都是1,在此不做赘述,我主要分析后两种协议的窗口大小。在SR协议中,窗口大小默认满足如下两个基本条件:发送窗口大小=接收窗口大小发......
  • 函数
    1.自定义函数 2.库函数库函数:IO函数  字符串操作函数 字符操作函数 内存操作函数         时间/日期操作函数  数学函数 其他库函数使用库函数时,必须使用包含#include对应的头文件https://cplusplus.com函数查询函数的参数:1.实际参数(实参):真实传......
  • 函数高级
    一、函数返回多个数据值1、return关键字的两个作用返回数据值结束函数运行2、函数中如果想要返回多个数据值,一般是组成元组进行返回deffunc(a,b):'''返回两个数的和及差'''returna+b,a-b#元组可加括号,也可......
  • 函数
    一、介绍把具有独立功能的代码块组织为一个小模块,在需要的时候调用作用:对具备相同逻辑的代码进行封装,提高代码编写效率,实现对代码的利用好处:减少代码冗余,提高代码运行效率函数必须先定义,后调用 二、函数的文档注释作用:对函数的作用和使用方法进行说明......
  • 全量窗口与增量窗口
    全量和增量是可以共用的,这种场景还是比较常见的。例如,分组后,先对每个组进行增量计算,然后对每个增量计算,做一个全窗口的计算。这个时候,就需要互相结合使用了。    一:窗口函数说明1:apply与process的区别 apply和process都是处理全量计算,但工......
  • 实验3 函数应用编程
      task1#include<stdio.h>#include<stdlib.h>#include<time.h>#include<windows.h>#defineN80voidprintf_text(intline,intcol,chartext[]);voidprintf_spaces(intn);voidprintf_blank_lines(intn);intmain(){intlin......
  • stat函数详解
    stat函数详解作用:获取文件信息头文件:#include<sys/types.h>#include<sys/stat.h>#include<unistd.h>函数原型:**intstat(constcharpath,structstatbuf)返回值:成功返回0,失败返回-1;参数:文件路径(名),structstat类型的结构体structstat结构体详解:structstat{......
  • 类型、类型变量、多态函数
    类型Haskell有一个静态类型系统,每个表达式的类型在编译时是已知的,这将产生更安全的代码与Java或C不同,Haskell有类型推断,不用显式编写类型理解类型系统是掌握Haskell的一个非常重要的部分:type命令可以检查表达式的类型,如下:type'a':typeTrue:type"hello":type(True,'......
  • 实验3 函数应用编程
    1.实验任务1task1.c1#include<stdio.h>2#include<stdlib.h>3#include<time.h>4#include<windows.h>5#defineN8067voidprint_text(intline,intcol,chartext[]);//函数声明8voidprint_spaces(intn);//函数声明9voidprint_bla......