--本文采用Oracle数据库测试,前4个查询为一组,后2个查询为一组,每组前面的查询是为了推出最后的查询

--创建表,为了简化处理,字段类型都采用varchar
create table tb_sc(
uName varchar2(10),
uCourse varchar2(10),
uScore varchar2(10)
);

--插入数据
insert into tb_sc values('张三','语文','80');
insert into tb_sc values('张三','数学','95');
insert into tb_sc values('李四','语文','90');
insert into tb_sc values('李四','数学','70');
insert into tb_sc values('王五','语文','90');
insert into tb_sc values('王五','数学','90');

--查询所有结果如下

select * from tb_sc;

--①查询每名学生的平均分(展示姓名、平均分)
select uName,avg(uScore) from tb_sc group by uName;

--②查询每名学生的平均分并按降序排列(展示姓名、平均分)
select uName,avg(uScore) from tb_sc group by uName order by avg(uScore) desc;

--③查询平均分数高于85分的学生(展示姓名、平均分)
select uName,avg(uScore) from tb_sc group by uname having avg(uScore)>'85' order by avg(uscore) desc;

--④查询姓名不为张三且平均分数高于85分的学生(展示姓名、平均分)
select uName,avg(uScore) from tb_sc where uName!='张三' group by uname having avg(uScore)>'85' order by avg(uscore) desc;

--⑤查询所有学生的信息并将每个学生的各科成绩降序排列
select t.*,row_number() over(partition by t.uname order by t.uscore desc) rm from tb_sc t;

--⑥查询每个学生考得最好的科目并展示该科目的成绩
select * from (
select t.*,row_number() over(partition by t.uname order by t.uscore desc) rm from tb_sc t
) where rm=1;

注:"row_number() over(partition by 分组字段 order by 排序字段)"开窗函数通常用于查询所有分组并将各个窗体进行排序

数据库sql 开窗函数的更多相关文章

  1. (011)每日SQL学习:SQL开窗函数

    开窗函数:在开窗函数出现之前存在着很多用 SQL 语句很难解决的问题,很多都要通过复杂的相关子查询或者存储过程来完成.为了解决这些问题,在 2003 年 ISO SQL 标准加入了开窗函数,开窗函数的 ...

  2. SQL开窗函数

    [SQL]四种排序开窗函数   一 .简单了解什么是开窗函数 什么是开窗函数,开窗函数有什么作用,特征是什么? 所谓开窗函数就是定义一个行为列,简单讲,就是在你查询的结果上,直接多出一列值(可以是聚合 ...

  3. 理解 SQL 开窗函数

    一次面试被问到开窗函数,懵逼了,赶紧补补总结一下.... 开窗函数也是函数,所以 比如在原来的查询上添加一个总数列 create table ztest( id int identity, c1 in ...

  4. [SQL SERVER系列]之常用函数和开窗函数介绍及实例

    本文主要介绍SQL SERVER数据库中一些常用的系统函数及其SQL SERVER 2005以上支持的开窗函数. 1.常用函数 --从字符串右边截取指定字符数 select RIGHT('HELLO' ...

  5. SQL使用开窗函数与CTE查询每月销售额的前几名

    WITH tagTab AS( SELECT YearMonth, pm=RANK() OVER(PARTITION BY YearMonth ORDER BY amount DESC) FROM S ...

  6. SQL ServerOVER 子句,over开窗函数,SQL SERVER 开窗函数

    https://technet.microsoft.com/zh-cn/library/ms189461(v=sql.105).aspx http://www.cnblogs.com/85538649 ...

  7. sql over开窗函数,

    sql over开窗函数, 1.使用over子句与rows_number()以及聚合函数进行使用,可以进行编号以及各种操作.而且利用over子句的分组效率比group by子句的效率更高. 2.在订单 ...

  8. sql server ,OVER(PARTITION BY)函数用法,开窗函数,over子句,over开窗函数

    https://technet.microsoft.com/zh-cn/library/ms189461(v=sql.105).aspx https://social.msdn.microsoft.c ...

  9. 【转】SQL SERVER 开窗函数简介

    在SQL SERVER 2005/2008支持两种排名开窗函数和聚集开窗函数. 以SQL SERVER中分面页为例,按时间顺序列出定单号. WITH OrderInfo AS ( SELECT ROW ...

随机推荐

  1. 在linux中使用shell来分析统计日志中的信息

    在运维工作中,要经常分析后台系统的日志,通过抓取日志中的关键字信息,对抓取结果进行统计,从而为监控结果提供基础数据.下面的shell演示了如何从大量的日志中取得想要的统计结果.其中展示了各种有趣的命令 ...

  2. 无线网破解 跑字典 EWSA使用教程

    当我们用奶瓶抓到包,就可以再windowsxp&7&8下跑字典 工具/原料 EWSA4.0完美汉化破解版 字典 方法/步骤 1.打开程序 2.导入握手包 3.配置EWSA ,1.选项 ...

  3. 完整的验证码识别流程基于svm(若是想提升,可优化)

    字符型图片验证码识别完整过程及Python实现 首先很感觉这篇文章的作者,将这篇文章写的这么好.我呢,也是拿来学习,觉得太好,所以忍不住就进行了转载. 因为我个人现在手上也有个验证码识别的项目,只是难 ...

  4. YARN学习笔记——Overview and Architecture

    YARN的简介 什么是YARN MRv1的架构和缺陷 经典MapReduce的局限性 解决可伸缩性问题 YARN的架构 一个可运行任何分布式应用程序的集群 YARN中的应用程序提交 YARN的其他特性 ...

  5. block的基本使用

    block用来保存一段代码 block的标志:^ block跟函数很像: 1. 可以保存代码 2. 有返回值 3. 有形参 4. 调用方式一样 定义bolock变量 例1: void (^myBloc ...

  6. Maven打包同一个jar有不同的:版本+时间戳(解决思路)

    在我们的开发过程中,目前流行的版本控制工具maven,在项目开发阶段,大家都是通过发布SNAPSHOT快照版进行相互模块之间的依赖开发, 这个时候就会有一个问题,要是一天构建多次的快照版,会发现在项目 ...

  7. https配置指导

    为了使Apache支持https访问,系统需要安有apache.openssl.mod_ssl.so 证书申请 https://ninghao.net/blog/4449 安装证书时 安装编译open ...

  8. Linux:Linux 常用命令讲解(软件、硬件、文件)

    一.Linux 常用命令 所有的命令操作都是在服务器上进行的 自学参考:菜鸟 Linux man + 命令:查看命令的文档: 命令  +  --usage:查看命令的文档: 命令  +  --help ...

  9. 【转】使用Jmeter针对ActiveMQ JMS Point To Point压力测试

    准备工作 针对JMS类型的Sampler,需要额外的jar包(这里用的是apache ActiveMQ,将下载的AMQ apache-activemq-5.5.0根目录下的activemq-all-5 ...

  10. linux 根据进程名查看其占用的端口

    linux 根据进程名查看其占用的端口 pasting $ netstat -nap | grep pid    //查看进程ID 所占的端口 netstat -lnp 查看端口所在的进程 will ...