order by 和 group by 的区别

order by 和 group by 的区别:

1,order by 从英文里理解就是行的排序方式,默认的为升序。 order by 后面必须列出排序的字段名,可以是多个字段名。

2,group by 从英文里理解就是分组。必须有“聚合函数”来配合才能使用,使用时至少需要一个分组标志字段。

注意:聚合函数是---sum()、count()、avg()等都是“聚合函数”

自己慢慢去理解的过程。。。。

为什么group by必须要用聚合函数?自己不断在数据库语句写了,摸索了半个小时,,真是愚钝

数据库表:

各种语句的测试:

select product from orders 查询所有product列,包括重复的

select product from orders GROUP BY product:查询结果只输出product不同的元素列,不包括重复的

select product,price from orders 查询所有的product列值,包括重复的。如果两个bb合在一起的话,那么price就查不出来 了,如下:

group by product 将product 相同的元素聚合在一起,去掉重复列,那么price将没有意义

只有 聚合在一起的东西才有意义,如聚合在一起的price之和(sum(price))就有意义了,有点感觉了

select product,sum(price) from orders GROUP BY product :这样才不会报错。

select product,sum(price) from orders GROUP BY product

//依照前面的(GROUP BY product)就是按 product分组,那么重复的aa就会聚集在一起,那么如果要继续查找 select product,price 继续查找price的话,price就不存在了。。因为重复的aa聚合在一起了。所以只能用一些聚合函数来玩,sum(price)

------------------------------------------------------------------------------------------------------------------------------------------------------------------------

那么我group by之后还要筛选一下sum(price) >100的product呢?

一开始我直接这么写的,很正常的思路啊、、

select product,sum(price) from orders where sum(price) GROUP BY product

然后查了一波资料,才知道where后面不能接聚合函数?????!!!!

具体原因:https://blog.csdn.net/w2232097312/article/details/52211201

简短来说是因为:聚合函数是针对结果集进行的,但是where条件并不是在查询出结果集之后运行,所以主函数放在where语句中,会出现错误

那么只能用另外一种方法:havaing。having就是专门为了应付这种情况而发明出来的。。。

select product,sum(price) from orders GROUP BY product HAVING sum(price)>100

换种写法,答案就出来了。。。

其他 扩展问题。。。

group by不能跟where一起用吗?

可以。注意:where肯定在group by 之前。

一,group by 字句也和where条件语句结合在一起使用。当结合在一起时,where在前,group by 在后。即先对select xx from xx的记录集合用where进行筛选,然后再使用group by 对筛选后的结果进行分组 使用having字句对分组后的结果进行筛选。

二,需要注意having和where的用法区别:

       1.having只能用在group by之后,对分组后的结果进行筛选(即使用having的前提条件是分组)。

       2.where肯定在group by 之前。

       3.where后的条件表达式里不允许使用聚合函数,而having可以。

三,当一个查询语句同时出现了where,group by,having,order by的时候,执行顺序和编写顺序是:

1.执行where xx对全表数据做筛选,返回第1个结果集。

2.针对第1个结果集使用group by分组,返回第2个结果集。

3.针对第2个结果集中的每1组数据执行select xx,有几组就执行几次,返回第3个结果集。

4.针对第3个结集执行having xx进行筛选,返回第4个结果集。

5.针对第4个结果集排序。

再来个order by这就是理解的过程。。。

select product,sum(price) from orders GROUP BY product HAVING sum(price)>100 ORDER BY sum(price);

group by 和 order by 的区别 + 理解过程相关推荐

  1. group by与order by的区别

    1. order by order by比较简单,作用就是排序 asc 从上到下慢慢升序 desc 从上到下慢慢降序 默认为升序(就是你sql后面不写order by 它就是升序) order by后 ...

  2. where、having、group by、order by、limit的区别和使用顺序

    where.having.group by.order by.limit的区别和使用顺序_姚文斌的博客-CSDN博客

  3. order by 、sort by、distribute by、group by、cluster by的区别

    转载:https://www.cnblogs.com/huxinga/p/7688376.html 转载:https://blog.csdn.net/SunWuKong_Hadoop/article/ ...

  4. 关于sql语句,where,group by,having,order by 优先级的理解

    文章目录 1.先给大家看表 2.测试,并给出结果 a)根据学号分组 b)根据学号,和课程号分组 c)说说having, d) 我们再说说 where 和 group by 和 having 的优先级 ...

  5. 当一个查询语句同时出现了where,group by,having,order by的时候,执行顺序和编写顺序

    当一个查询语句同时出现了where,group by,having,order by的时候,执行顺序和编写顺序  使用count(列名)当某列出现null值的时候,count(*)仍然会计算,但是co ...

  6. mysql “group by ”与order by的研究--分类中最新的内容

    这两天让一个数据查询难了.主要是对group by 理解的不够深入.才出现这样的情况 这种需求,我想很多人都遇到过.下面是我模拟我的内容表 我现在需要取出每个分类中最新的内容 select * fro ...

  7. SQL group by 和 order by 、where、having

    表如下: 基本group by: 排序: order by和group by一起使用: 1 order by 的列,必须是出现在group by 子句里的列 2 order by 要 放在 group ...

  8. SQL语句where,Group By,having order by 的详细使用方法

    为什么80%的码农都做不了架构师?>>>    1. Group By 语句简介: Group By语句从英文的字面意义上理解就是"根据(by)一定的规则进行分组(Grou ...

  9. mysql group by与order by的研究--分类中最新的内容

    这两天让一个数据查询难了.主要是对group by 理解的不够深入.才出现这样的情况  这种需求,我想很多人都遇到过.下面是我模拟我的内容表 复制代码代码如下: CREATE TABLE `test` ...

最新文章

  1. 资源 | 一文掌握机器学习所有值得看的视频、课程、工具
  2. Vue注意事项及用得较多的属性归纳
  3. 三十二、Java集合中的ArrayList
  4. Python IO 基本编程示例
  5. 万向区块链首席经济学家:央行数字货币与狭义银行是不同层次的概念
  6. sql时间转换时分秒_SQL时分秒之间相互转换
  7. C#读取所有PC中所有进程
  8. 软件测试工程师年终总结模版,软件测试工程师岗位工作总结汇报报告范文模板...
  9. 远程桌面控制计算机,如何在局域网中进行远程桌面登入实现远程控制电脑
  10. 数据库开源项目_开源项目贴纸库
  11. php7中setlocale函数,setlocale
  12. iso文件连接服务器访问路由器硬盘,多种系统下访问路由器硬盘的方法 | 192路由网...
  13. 山城虽寒、但物联却热,探访中移物联小记一笔……
  14. 机器人鸣人是哪一集_博人传鸣人出场集数 博人传佐助哪几集出现过
  15. table添加一行且可编辑 vue_Vue使用AntDesign 表格可添加 可编辑行 可选择
  16. android 包命名不管你怎么命,千万不要用下面几个
  17. jerry推荐好玩的做图网站
  18. pdf文件流转图片流方法(PDF文档所有页全部转换为图片 )
  19. Word中的TIF图像保存后再打开就模糊了
  20. 前端js导出Excel库(js-export-excel)在React/Vue中使用参考

热门文章

  1. Java--算法特训(1)暴力破解和实用性优先(题目二)
  2. 高级软件测试工程师的面试
  3. ABSA-《Aspect-Category-Opinion-Sentiment Quadruple Extraction with Implicit Aspects and Opinions》论文阅读
  4. Java八大数据类型
  5. 大数据-Hadoop概论
  6. PHP开发实战权威指南-读书总结
  7. HDU-2567-寻梦
  8. 【计算机网络】第三部分 数据链路层(13) 有线局域网:以太网
  9. btrfs 使用方法
  10. 不知道密码,怎么打开PPT文件