例子:在一个StudentScore表中,有序号ID,班级ClassId,学生姓名Name,性别Sex,语文成绩ChineseScore,数学成绩MathScore,平均成绩AverageScore等等一些学生成绩及个人信息字段

问一:每个班级中,平均成绩在60(含60)分以上的学生人数?

问二:每个班级中本次考试平均成绩是班级前三的同学的所有信息?

问三:每个班级中语文与数学都达到60(含60)分以上的同学的所有信息?

一、Group By 分组

select count(ClassId) from StudentScore where AverageScore>=60 group by ClassId

group by + 字段 A:根据字段A分组查询,通常group by 是与聚合函数连用的,因为当group by 存在时,select查询的字段要么是在group by子句中,要么存在聚合函数中,当select后字段独立时,编译器将会报错。错误例子:select A,count(B),C from tabel group by A; 错误原因:字段C既没有在group by子句中,也没有在聚合函数中

二、partition by分区函数(此处只是partition的一小部分功能)

因为要查看每个班级中达到条件的同学的所有信息,那么根据group by的特性可知,此处已不适合使用group by。

select * from (select Row_Number() Over(partition by ClassId order by AverageScore desc) rownum,* from StudentScore) Score where rownum>0 and rownum<4

解释:首先根据班级ClassId进行分区,在此基础上再对平均分AverageScore进行降序排列。

partition by 分区函数可以根据某字段分区并返回所有结果集,作为分区函数一般与Row_Number() over()排序一起连用,可实现分区排序的功能。个人觉得:主要是可以返回查询到的、包含所有字段的结果集。

---------------------------------------------------------

group by是对检索结果的保留行进行单纯分组,一般总爱和聚合函数一块用例如AVG(),COUNT(),max(),main()等一块用。

partition by虽然也具有分组功能,但同时也具有其他的功能。

它属于oracle的分析用函数。
sum() over (PARTITION BY ...) 是一个分析函数。 他执行的效果跟普通的sum ...group by ...不一样,它计算组中表达式的累积和,而不是简单的和。

sql server partition分区与group by 分组的更多相关文章

  1. SQL Server - Partition by 和 Group by对比

    参考:https://www.cnblogs.com/hello-yz/p/9962356.html —————————————————— 今天大概弄懂了partition by和group by的区 ...

  2. 深入浅出SQL Server 2008 分区函数和分区表

    原文:深入浅出SQL Server 2008 分区函数和分区表 当我们数据量比较大的时候,我们需要将大型表拆分为多个较小的表,则只访问部门数据的查询就可以更快的运行,基本原理就是,因为要扫描的数据变的 ...

  3. SQL Server 2008 分区函数和分区表详解

    [摘要]本文详细介绍SQL Server 2008 分区函数和分区表,包括查询某个分区.归档数据.添加分区.删除分区等内容. 当我们数据量比较大的时候,我们需要将大型表拆分为多个较小的表,则只访问部门 ...

  4. SQL Server表分区的NULL值问题

    SQL Server表分区的NULL值问题 SQL Server表分区只支持range分区这一种类型,但是本人觉得已经够用了 虽然MySQL支持四种分区类型:RANGE分区.LIST分区.HASH分区 ...

  5. SQL Server表分区【转】

    转自:http://www.cnblogs.com/knowledgesea/p/3696912.html SQL Server表分区   什么是表分区 一般情况下,我们建立数据库表时,表数据都存放在 ...

  6. SQL Server表分区详解

    原文:SQL Server表分区详解 什么是表分区 一般情况下,我们建立数据库表时,表数据都存放在一个文件里. 但是如果是分区表的话,表数据就会按照你指定的规则分放到不同的文件里,把一个大的数据文件拆 ...

  7. SQL Server表分区-水平分区

    SQL Server表分区,sql server水平分区 转自:http://www.cnblogs.com/knowledgesea/p/3696912.html  根据时间的,直接上T-SQL代码 ...

  8. Ubuntu上配置SQL Server Always On Availability Group(Configure Always On Availability Group for SQL Server on Ubuntu)

    下面简单介绍一下如何在Ubuntu上一步一步创建一个SQL Server AG(Always On Availability Group),以及配置过程中遇到的坑的填充方法. 目前在Linux上可以搭 ...

  9. Configure Always On Availability Group for SQL Server on RHEL——Red Hat Enterprise Linux上配置SQL Server Always On Availability Group

    下面简单介绍一下如何在Red Hat Enterprise Linux上一步一步创建一个SQL Server AG(Always On Availability Group),以及配置过程中遇到的坑的 ...

随机推荐

  1. windows下手动安装pyinstaller(python2.7)

    1.首先,安装python2.7.13,官网下载msi版(windows直接安装): https://www.python.org/downloads/ 2.然后,到python包官网依次下载,fut ...

  2. springboot 2.0 自定义redis自动装配

    首先创建maven项目 pom.xml: <?xml version="1.0" encoding="UTF-8"?> <project xm ...

  3. 33_java之类加载器和反射

    01类加载器 * A.类的加载 当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化三步来实现对这个类进行初始化. * a 加载 * 就是指将class文件读入内存,并为之 ...

  4. Ubuntu 安装VNC

    ubuntu:.安装x11vnc sudo apt-get install x11vnc .设置密码 x11vnc -storepasswd .启动x11vnc(每次windows远程控制,都需要启动 ...

  5. 可视化库-Matplotlib-直方图(第四天)

    1.plt.hist(array, bins, color)  # array表示数值, bins表示的是bin的范围 data = np.random.normal(0, 20, 1000) # 画 ...

  6. Best free online svn repositories

    Maybe you want to develop in a custom team environment or you usualy work on different machines (tha ...

  7. update svn cache 慢

    eclipse 打开了一个工程,就进行了update svn cache,弄了2个多小时了还是在进行.观察这个过程在空文件夹上也进行了不少时间,我感觉到可能方法错了.试了下关闭SVN--> sv ...

  8. numpy中的ndarray方法和属性

    原文地址 NumPy数组的维数称为秩(rank),一维数组的秩为1,二维数组的秩为2,以此类推.在NumPy中,每一个线性的数组称为是一个轴(axes),秩其实是描述轴的数量.比如说,二维数组相当于是 ...

  9. k8s gpu 资源设置

    将所有相同型号显卡的node打上 相同的label kubectl label node ogs-gpu02 gpu_type=k20m 启动device plugin 和app 时: nodeSel ...

  10. python's mutable & immutable

    [python's mutable & immutable] python里面的类型其实也分为immutable和mutable二种,对于mutable,如果b指向a,当b改变时,a也会改变: ...