简单说下group by 和 partition by 的区别:
group by 对数据进行分组,得到分组后的统计数据,强调的是数据整体;
partition by 对数据进行分组,得到的还是明细数据,更加强调数据个体;
场景案例一:若查询到所有数据后,根据group by分组,获得分组数据,同时还想查询所有数据并知道每条明细属于哪一组,可以查看如下示例。
- group by +分组字段,拼接分组字段生成唯一标识符GUID;
- 明细数据同样根据group by 中的分组字段,拼接分组字段生成唯一标识符GUID;
- 即可根据GUID将明细和统计数据关联, 知道每条明细属于哪个分组;
- 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),'')
+