sql:distinct,group by,partition by区别

distinct与group by的区分参考这篇文章:MySQL 中的 distinct 和 group by 的性能比较_distinct性能-CSDN博客

总结就是:distinct与group by都是去重使用,如果使用聚合函数必须搭配group by分组,group by 有一个原则,就是 select 后面的所有列中,没有使用聚合函数的列,必须出现在 group by 后面。

附上五个聚合函数:

  • AVG():求平均值
  • SUM()求总和
  • MAX() :求最大值
  • MIN():求最小值
  • COUNT():求个数

然后回到正题:我对distinct与group by的总结是:DISTINCT和GROUP BY都用于去除重复记录,但它们的工作方式不同。DISTINCT是在查询结果集的基础上去除重复记录,并返回唯一的记录集。而GROUP BY是在查询过程中对结果集进行分组,并返回每组的聚合值。你可以理解为group by是为了搭配聚合函数来使用的。

在Mysql官方文档上说:在大多数情况下,distinct可以理解为特殊的group by

partition by 这个就厉害了,他就是个分区函数,不去重!不去重!不去重! ,直接上代码:

	Select Row_Number() Over (partition by b.MaterialCode,a.CheckName Order By a.FormNo) rowid,a.FormNo,b.MaterialCode,a.CheckName,Avg(Convert(Decimal,a.CheckData)) data, Max(B.InputDate) InputDate,b.Company
	From tblMaterialCheckDetail a ,tblMaterialCheckMaster b 
	Where a.FormNo=b.FormNo And ISNUMERIC(CheckData)=1 
	And b.InputDate > convert(varchar(11),dateadd(day,-60,getdate()),120) 
	Group By a.FormNo,b.MaterialCode,a.CheckName,b.Company

解释一下 Row_Number() Over (partition by b.MaterialCode,a.CheckName Order By a.FormNo) rowid  这个是在将 数据按照MaterialCode和CheckName进行分区,并且搭配Row_number函数生成了rowid,方便进行后面的数据操作。partition by的使用场景和group by完全不同,很容易区分。

关于分区函数Partition By与rank()的用法“对比”分区函数Partition By与row_number()的用法参考:

分区函数Partition By的用法-CSDN博客

相关推荐

  1. http和https区别

    2023-12-24 00:58:03       39 阅读
  2. nginx root alias 区别

    2023-12-24 00:58:03       32 阅读
  3. “==”和“equals”的区别

    2023-12-24 00:58:03       42 阅读
  4. == 和 equals 的区别

    2023-12-24 00:58:03       37 阅读
  5. MyBatis ${}和#{}区别

    2023-12-24 00:58:03       37 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-24 00:58:03       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-24 00:58:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-24 00:58:03       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-24 00:58:03       20 阅读

热门阅读

  1. 【Linux基本命令】

    2023-12-24 00:58:03       43 阅读
  2. oracle数据库sqlplus登录卡顿

    2023-12-24 00:58:03       40 阅读
  3. Debezium日常分享系列之:Debezium 2.5.0.Final发布

    2023-12-24 00:58:03       38 阅读
  4. 7-8 旅行售货员

    2023-12-24 00:58:03       39 阅读
  5. 如何使用CMake查看opencv封装好的函数

    2023-12-24 00:58:03       50 阅读
  6. 偏最小二乘法中的“偏”的含义

    2023-12-24 00:58:03       43 阅读
  7. Spark SQL

    Spark SQL

    2023-12-24 00:58:03      40 阅读
  8. python简单分割文件的方法(python经典案例)

    2023-12-24 00:58:03       37 阅读
  9. 排序算法——希尔排序

    2023-12-24 00:58:03       44 阅读