groupby的原理及使⽤场景
⼀直⽤不好groupby,只记得groupby的时候不能select其他字段(⾮groupby的字段),但是也看到有些函数如count()可以和groupby⼀起⽤。有点理不清宁不过来怎么⽤,今天查资料学习整理了⼀下,希望可以记住。:(
定义:
GROUP BY 语句⽤于结合聚合函数,根据⼀个或多个列对结果集进⾏分组。groupby是什么函数
聚合函数:
聚合函数:
⽰例:统计1号,2号每个Customer购买的产品总价。
sql语句实现为: select sum(ProdctPrice) from table where (OrderDate = '2020/6/1' or OrderDate = '2020/6/2') group by CustomerID
实现过程解析:
group by CustomerID,那么CustomerID那⼀列,将具有相同CustomerID值的⾏,合并成⼀⾏且去重,只留⼀个值。
对应的其他列的值,会将其他列的值合并整合到⼀⾏⾥,不做任何过滤处理。
如对于CustomerID值为A,group by 后,CustomerID值相同为A的三⾏合并成⼀⾏,CustomerID值为A,该⾏对应的其他列的值是其他列所有CustomerID值相同为A的值的汇总,如OrderID的值有三个。
这就是为什么select的时候不能加其他字段,但是可以使⽤聚合函数了。
1)如果执⾏select *的话,那么返回的结果就包括灰⾊隐藏部分的含有多个值得列,如OrderID和ProductN等中有的内容是多个值的,⽽关系数据库就是基于关系的,单元格中是不允许有多个值的,所以你看,执⾏select * 语句就报错了。
2)⽽CustomerID列,每个单元格只有⼀个数据,所以我们select CustomerID的话,就没有问题了。CustomerID列只有⼀个值呢,是因为⽤CustomerID列来group by的。
3)对于有多个数据的列依然可以过滤使⽤,就是⽤聚合函数,聚合函数就⽤来输⼊多个数据,输出⼀个数据的。如cout(),sum(),⽽每个聚合函数的输⼊就是每列含有多数据的值。
聚合函数参加上图。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论