参考:https://www.cnblogs.com/hello-yz/p/9962356.html

——————————————————

今天大概弄懂了partition by和group by的区别联系。

1. group by是分组函数,partition by是分析函数(然后像sum()等是聚合函数);

2. 在执行顺序上,

以下是常用sql关键字的优先级

from > where > group by > having > order by

而partition by应用在以上关键字之后,实际上就是在执行完select之后,在所得结果集之上进行partition。

3. partition by相比较于group by,能够在保留全部数据的基础上,只对其中某些字段做分组排序(类似excel中的操作),而group by则只保留参与分组的字段和聚合函数的结果(类似excel中的pivot)。

partition by

group by

4. 如果在partition结果上聚合,千万注意聚合函数是逐条累计运行结果的!而在group by后的结果集上使用聚合函数,会作用在分组下的所有记录上。

数据如下,

SQL1

select a.cc,a.item,sum(a.num)
from table_temp a
group by a.cc,a.item

Result1

11条记录经group by后为10条,其中cc='cn' and item='8.1.1'对应的两条记录的num汇总成值3.

SQL2

select a.cc,a.num, min(a.num) over (partition by a.cc order by a.num asc) as amount
from table_temp a
group by a.cc,a.num; select a.cc,a.num, min(a.num) over (partition by a.cc order by a.num desc) as amount
from table_temp a
group by a.cc,a.num;

Result2

  

两个sql的唯一区别在于a.num的排序上,但从结果红框中的数据对比可以看到amount值并不相同,且第二个结果集amount并不都是最小值1。

在这里就是要注意将聚合函数用在partition后的结果集上时,聚合函数是逐条累积计算值的!

其实partition by常同row_number() over一起使用,

select a.*, row_number() over (partition by a.cc,a.item order by a.num desc) as seq
from table_temp a

清醒时做事,糊涂时读书,大怒时睡觉,独处时思考; 做一个幸福的人,读书,旅行,努力工作,关心身体和心情,成为最好的自己 -- 共勉

SQL Server - Partition by 和 Group by对比的更多相关文章

  1. sql server partition分区与group by 分组

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

  2. SQL Server 2012 数据库各个版本功能对比

    作为这篇SQL SERVER 2008数据库各版本功能对比 的姊妹篇,就写点SQL Server 2012 各个版本的区别以及物理以及逻辑上的限制. 个部分来分http://technet.micro ...

  3. 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上可以搭 ...

  4. 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),以及配置过程中遇到的坑的 ...

  5. Configure Always On Availability Group for SQL Server on Ubuntu——Ubuntu上配置SQL Server Always On Availability Group

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

  6. Linux 上配置 SQL Server Always On Availability Group

    SQL Server Always On Availability Group 配置步骤:配置三台 Linux 集群节点创建 Availability Group配置 Cluster Resource ...

  7. partition by和group by对比

    今天大概弄懂了partition by和group by的区别联系. 1. group by是分组函数,partition by是分析函数(然后像sum()等是聚合函数): 2. 在执行顺序上, 以下 ...

  8. SQL SERVER 2008数据库各版本功能对比

    微软SQL SERVER 2008数据库有6个版本,分别是数据中心版.企业版.标准版.Web版.工作组版.简易版,有时候购买的时候或需要使用某项功能时,需要了解各个版本的区别,功能差异,很多时候,大部 ...

  9. C# & SQL Server大数据量插入方式对比

    以下内容大部分来自: http://blog.csdn.net/tjvictor/article/details/4360030 部分内容出自互联网,实验结果为亲测. 最近自己开发一个向数据库中插入大 ...

随机推荐

  1. leetcode 224. Basic Calculator 、227. Basic Calculator II

    这种题都要设置一个符号位的变量 224. Basic Calculator 设置数值和符号两个变量,遇到左括号将数值和符号加进栈中 class Solution { public: int calcu ...

  2. java8 Lambda表达式的新手上车指南(1)--基础语法和函数式接口

    背景 java9的一再推迟发布,似乎让我们恍然想起离发布java8已经过去了三年之久,java8应该算的上java语言在历代版本中变化最大的一个版本了,最大的新特性应该算得上是增加了lambda表达式 ...

  3. 分布式任务调度平台XXL-JOB搭建教程

    关于分布式任务调度平台XXL-JOB,其实作者 许雪里 在其发布的中文教程中已经介绍的很清楚了,这里我就不做过多的介绍了,关于其搭建教程,本人依照其文档搭建起来基本上也没遇到啥问题,这里通过博客的形式 ...

  4. Python学习总结 11 使用tempest测试OpenStack

    1, 什么是Tempest tempest ├── api # API的测试集 ├── cli # OpenStack的命令行工具测试集 ├── common # 一些公共的工具类和函数 ├── sc ...

  5. js 移除数组元素

    //移除数组元素 Array.prototype.remove = function(val) { var index = this.indexOfArr(val); if (index > - ...

  6. Linux利用mysql建立数据库

    安装数据库: sudo   apt-get  install  mysql-server   启动服务: sudo  service  mysql  start  连接数据库:sudo    mysq ...

  7. Photoshop合成雪景天使美女照片

    一.新建一个800 * 426的文件,打开人物素材把不要的东西删除掉,因为白雪景色很白,就直接涂上白色就可以了,然后把人像移动到我要的角度. 二.对人物图层按Ctrl + M 调整曲线,参数设置如下图 ...

  8. 写论文时,使用word的一些技巧

    目录 怎么设置文章里所有英文的字体.所有中文的字体样式 删除文章中的所有或者部分超链接 设置忽略英文的拼写检查 怎么设置文章里所有英文字体.所有中文字体样式 用鼠标选中需要更改的文章内容,如果是全文, ...

  9. [转帖]Linux操作系统中,*.zip、*.tar、*.tar.gz、*.tar.bz2、*.tar.xz、*.jar、*.7z等格式的压缩与解压

    Linux操作系统中,*.zip.*.tar.*.tar.gz.*.tar.bz2.*.tar.xz.*.jar.*.7z等格式的压缩与解压 https://blog.csdn.net/gatieme ...

  10. 2019阿里P7最新总结Spring Boot面试问题

        Spring Boot一直是Spring生态系统的关键参与者.该项目通过其自动配置功能使我们的生活更加轻松.在本教程中,我们将介绍在求职面试中可能出现的一些与Spring Boot相关的最常见 ...