zoukankan      html  css  js  c++  java
  • 【SQL查询】分区查询Over

    1. Over介绍

      Over为开窗函数。就是把满足条件的数据分成几个区域,每个区域可以通过像现实中的“窗口”来观察统计这些数据。

      over不能单独使用,要和分析函数:rank(), dense_rank(), row_number(),ntile()等一起使用。

    2. 示例

      (1)脚本

    /* 表结构*/
    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);
    commit;

      (2)Rank(排名):

    select t.*, rank() over(partition by t.subject order by t.scorce desc) as paiming  from student t;

    按照科目进行分区,每个区域按照分数进行排序,并得出排序结果的排名号。rank()是跳跃排序,有两个第1名,接下来就是第3名。

      (2)Dense_Rank(密集排名)

    select t.*,dense_rank() over(partition by t.subject order by t.scorce desc) as paiming from student t;

    按照科目进行分区,每个区域按照分数进行排序,并得出排序结果的排名号。dense_rank()为连续排序,有两个第1名,接下来就是第2名。

      (3)row_number(行号)

    select t.*,row_number() over(partition by t.subject order by t.scorce desc) as num from student t;

    按照科目进行分区,每个区域按照分数进行排序,并得出排序结果的序号。

  • 相关阅读:
    window.parent ,window.top,window.self 详解及parent和opener的区别
    jQuery $.extend()用法总结
    JQuery中each()的使用方法说明
    jQuery.isPlainObject()的作用
    change和onchange、click和onclick的区别
    zabbix客户端一键安装脚本(主动模式监控)
    jumpserver在centos 7上的部署
    用阿里云的免费 SSL 证书让网站从 HTTP 换成 HTTPS
    GitLab的安装及使用教程
    一个客户端一键安装环境和服务的shell脚本
  • 原文地址:https://www.cnblogs.com/zhuhaiying/p/9670826.html
Copyright © 2011-2022 走看看