zoukankan      html  css  js  c++  java
  • SQL窗口函数RANK(),Dense_Rank(),row_number(),NTILE()

    数据源

    CREATE TABLE student(
      no int,
      ca varchar(20),
      name varchar(50),
      subject  varchar(50),
      scorce int
    );
    
    /* 数据 */
    INSERT INTO student VALUES(1, '1班', '张三', '语文', 85);
    INSERT INTO student VALUES(2, '1班', '张三', '数学', 90);
    INSERT INTO student VALUES(3, '1班', '张三', '英语', 70);
    INSERT INTO student VALUES(4, '1班', '李四', '语文', 70);
    INSERT INTO student VALUES(5, '1班', '李四', '数学', 99);
    INSERT INTO student VALUES(6, '1班', '李四', '英语', 62);
    INSERT INTO student VALUES(7, '1班', '王五', '语文', 82);
    INSERT INTO student VALUES(8, '1班', '王五', '数学', 74);
    INSERT INTO student VALUES(9, '1班', '王五', '英语', 89);
    INSERT INTO student VALUES(10, '2班', '刘晓希', '语文', 77);
    INSERT INTO student VALUES(11, '2班', '刘晓希', '数学', 99);
    INSERT INTO student VALUES(12, '2班', '刘晓希', '英语', 80);
    INSERT INTO student VALUES(13, '2班', '朱鹏', '语文', 87);
    INSERT INTO student VALUES(14, '2班', '朱鹏', '数学', 86);
    INSERT INTO student VALUES(15, '2班', '朱鹏', '英语', 76);
    INSERT INTO student VALUES(16, '2班', '欧阳雪', '语文', 91);
    INSERT INTO student VALUES(17, '2班', '欧阳雪', '数学', 83);
    INSERT INTO student VALUES(18, '2班', '欧阳雪', '英语', 77);
    --  RANK() 排名
    --  按照科目进行分区,每个区域按照分数进行排序,并得出排序结果的排名号。rank()是跳跃排序,有两个第1名,接下来就是第3名。
    SELECT t.*,
           RANK() OVER (PARTITION BY t.subject ORDER BY t.scorce DESC) AS 排名
    FROM student t

    -- Dense_Rank()密集排名
    -- 按照科目进行分区,每个区域按照分数进行排序,并得出排序结果的排名号。dense_rank()为连续排序,有两个第1名,接下来就是第2名。
    SELECT t.*,
           DENSE_RANK() OVER (PARTITION BY t.subject ORDER BY t.scorce DESC) AS 排名
    FROM student t;

    -- row_number()行号
    SELECT t.*,
           ROW_NUMBER() OVER (PARTITION BY t.subject ORDER BY t.scorce DESC) AS 行号
    FROM student t;
    -- NTILE()查询结果分组
    SELECT t.*,
           NTILE(6) OVER (PARTITION BY t.subject ORDER BY t.scorce DESC) AS 分组
    FROM student t
    ORDER BY 分组

  • 相关阅读:
    C# Mongo Client 2.4.2创建索引
    MongoDB Driver:使用正确的姿势连接复制集
    C# Mongo Client 2.4.2判断是否存在表
    c# Mongodb批量更新
    c# Mongodb创建自增列
    class A where T:new()是什么意思
    Dapper Extensions中修改Dialect
    golang 中的 sizeof 以及 golang中的 union
    将c语言的结构体定义变成对应的golang语言的结构体定义,并将golang语言结构体变量的指针传递给c语言,cast C struct to Go struct
    golang 与 c语言 之间传递指针的规则提案
  • 原文地址:https://www.cnblogs.com/lgxlsm/p/10648725.html
Copyright © 2011-2022 走看看