sql分组查询和聚合查询的区别_sql将查询数据生成一张表

sql分组查询和聚合查询的区别_sql将查询数据生成一张表,第1张

sql分组查询和聚合查询的区别_sql将查询数据生成一张表 1 分组聚合的原因SQL中分组函数和聚合函数之前的文章已经介绍过,单说这两个函数有可能比较好理解,分组函数就是group by,聚合函数就是COUNT、MAX、MIN、AVG、SUM。

拿上图中的数据进行解释,假设按照product_type这个字段进行分组,分组之后结果如下图。

SELECT product_type from productgroup by product_type从图中可以看出被分为了三组,分别为厨房用具、衣服和办公用品,就相当于对product_type这个字段进行了去重,确实group by函数有去重的作用。

SELECT DISTINCT product_type from product假设分组之后,我想看一下价格,也就是sale_price这个字段的值,按照如下这个写法,会报如下错误。

SELECT product_type,sale_price from productgroup by product_type这是为什么呢?原表按照product_type分组之后,厨房用具对应4个值,衣服对应2个值,办公用品对应2个值,这就是在取sale_price这个字段的时候为什么报错了,一个空格中不能填入多个值,这时候就可以用聚合函数了,比如求和,求平均,求最大最小值,求行数。

聚合之后的值就只有一个值了。

SELECT product_type,sum(sale_price),avg(sale_price),count(sale_price),max(sale_price) from productgroup by product_type对于多个字段的分组,其原理是一样的。

从上述中记住两点:分组去重和分组聚合。

2 distinct和group by去重的区别Distinct 和group by 设计时侧重点不一样distinct只是为了去重,而group by是为了聚合统计的。

两者都有去重的效果,但是执行的效率不一样单个字段去重--DISTINCTSELECT distinct product_type from product--GROUP BYselect product_type from productGROUP BY product_type多个字段去重--DISTINCTSELECT distinct product_name, product_type from product--GROUP BYselect product_name, product_type from productGROUP BY product_name, product_type执行效率select <列名1>,<列名2>from<表名>where 查询条件group by 分组类别having 对分组结果指定条件order by <列名> (desc)limit 数字SQL语言的运行顺序,先执行上图中的第一步,然后再执行select子句,最后对结果进行筛选。

distinct是在select子句中,而group by在第一步中,所以group by去重比distinct去重在效率上要高。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/tougao/649135.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-17
下一篇 2022-04-17

发表评论

登录后才能评论

评论列表(0条)

保存