group by和 partition by 结合使用场景

本文探讨了SQL中group by和partition by的区别。group by用于整体数据分组,提供统计信息;而partition by则关注数据个体,用于在明细数据中创建分区。举例说明,在查询所有数据并按group by分组后,如何利用partition by生成唯一标识符,以关联明细数据和分组统计数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简单说下group by 和 partition by 的区别:
group by 对数据进行分组,得到分组后的统计数据,强调的是数据整体;
partition by 对数据进行分组,得到的还是明细数据,更加强调数据个体;

场景案例一:若查询到所有数据后,根据group by分组,获得分组数据,同时还想查询所有数据并知道每条明细属于哪一组,可以查看如下示例。

  1. group by +分组字段,拼接分组字段生成唯一标识符GUID;
  2. 明细数据同样根据group by 中的分组字段,拼接分组字段生成唯一标识符GUID;
  3. 即可根据GUID将明细和统计数据关联, 知道每条明细属于哪个分组;
  4. partition by 其实在这里的明细中并没有实际意义,只是我是在明细中先对数据进行分区,每个分区内的数据排序后,想到同一分区内数据如果有一个标识符能和group by 中的数据关联,而想到通过分组字段生成唯一标识字符串。
    在这里插入图片描述
    在这里插入图片描述
SELECT
SUBSTRING(sys.fn_VarBinToHexStr(hashbytes('MD5',ISNULL(LTRIM(SC.MTeaKeyName),'')
	+ISNULL(LTRIM(SC.MTeaName),'')				
	+ISNULL(LTRIM(SC.classRoomKeyName),'')			
	+ISNULL(LTRIM(SC.classRoomName),''	)		
	+ISNULL(LTRIM(SC.PeriodCount),''	)			
	+ISNULL(LTRIM(SC.FullPeopleCount),'')				
	+ISNULL(LTRIM(SC.IsleaveKey),''	)		
	+ISNULL(LTRIM(SC.IsleaveKeyValue),'')			
	+ISNULL(LTRIM(SC.IsChargesKey),'')			
	+
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值