GROUP BY 语句

group by 一般和聚合函数一起使用,根据一个或者多字段对结果集进行分组统计。

使用示例:orders表为例

O_Id OrderDate OrderPrice Customer
1 2008/12/29 1000 Bush
2 2008/11/23 1600 Carter
3 2008/10/05 700 Bush
4 2008/09/28 300 Bush
5 2008/08/06 2000 Adams
6 2008/07/21 100 Carter

现在,我们希望查找每个客户的总金额(总订单)。

我们想要使用 GROUP BY 语句对客户进行组合,就是把同一个客户放在一组。

SQL 语句如下:

SELECT Customer,SUM(OrderPrice) FROM Orders
GROUP BY Customer

结果集类似这样:

Customer SUM(OrderPrice)
Bush 2000
Carter 1700
Adams 2000

让我们看一下如果省略 GROUP BY 会出现什么情况:

SELECT Customer,SUM(OrderPrice) FROM Orders

结果集类似这样:

Customer SUM(OrderPrice)
Bush 5700
Carter 5700
Bush 5700
Bush 5700
Adams 5700
Carter 5700

上面的结果集不是我们需要的。

那么为什么不能使用上面这条 SELECT 语句呢?解释如下:上面的 SELECT 语句指定了两列(Customer 和 SUM(OrderPrice))。"SUM(OrderPrice)" 返回一个单独的值("OrderPrice" 列的总计),而 "Customer" 返回 6 个值(每个值对应 "Orders" 表中的每一行)。因此,我们得不到正确的结果。不过,您已经看到了,GROUP BY 语句解决了这个问题。

having 用法

having  的使用是由于where不能与聚合函数进行一起使用 ,having在使用的过程中只能用在group by 后面,针对分组的结果进行筛选。

示例:表示按照name进行分组后取出name字段重复的元素

1
SELECT "count"(name)  ,name  from an_name GROUP BY name HAVING "count"(*)>1

order by

order by 表示排序 asc 升序 ,desc 降序

当一个查询语句同时出现了where,group by,having,order by (这个顺序也是sql在编写时候的顺序)的时候,执行顺序和编写顺序是:
1.执行where xx对全表数据做筛选,返回第1个结果集。
2.针对第1个结果集使用group by分组,返回第2个结果集。
3.针对第2个结果集中的每1组数据执行select xx,有几组就执行几次,返回第3个结果集。
4.针对第3个结集执行having xx进行筛选,返回第4个结果集。

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

6.分组字段必须包含在查询字段里。

sql grop by having order by 的用法相关推荐

  1. SQL、LINQ、Lambda 三种用法(转)

    SQL.LINQ.Lambda 三种用法 颜色注释: SQL LinqToSql Lambda QA 1. 查询Student表中的所有记录的Sname.Ssex和Class列. select sna ...

  2. SQL Server 中 with tmp 临时表的用法

    SQL Server 中 with tmp 临时表的用法 ----------with临时表用法,有时候采用临时表比采用in的效率更高,避免了全表扫描. 实例中实现了查询普通题.大题.子题目的sql ...

  3. group by 与 order by的用法

    group by 与 order by的用法 GROUP BY 语句用于结合聚合函数,根据一个或多个列对结果集进行分组. SQL GROUP BY 语法 SELECT column_name, agg ...

  4. Apache中的Order Allow,Deny用法详解

    本文讲述了Apache中的Order Allow,Deny用法.分享给大家供大家参考,具体如下: Allow和Deny可以用于apache的conf文件或者.htaccess文件中(配合Directo ...

  5. 解决Sql中DIstinct与Order By共同使用的冲突问题

    解决Sql中DIstinct与Order By共同使用的冲突问题 参考文章: (1)解决Sql中DIstinct与Order By共同使用的冲突问题 (2)https://www.cnblogs.co ...

  6. PL/SQL中存储过程int和out的用法

    PL/SQL中存储过程int和out的用法 一 介绍 过程和函数中的in和out (1)一般来讲,过程和函数的区别在于函数可以有一个返回值:而过程没有返回值. (2)但过程和函数都可以通过out指定一 ...

  7. ROWNUMBER() OVER( PARTITION BY COL1 ORDER BY COL2)用法

    ROWNUMBER() OVER( PARTITION BY COL1 ORDER BY COL2)用法      今天在使用多字段去重时,由于某些字段有多种

  8. oracle中having的用法,深入浅析SQL中的group by 和 having 用法

    一.sql中的group by 用法解析: Group By语句从英文的字面意义上理解就是"根据(by)一定的规则进行分组(Group)". 作用:通过一定的规则将一个数据集划分成 ...

  9. PostgreSQL SQL中的ALL,ANY,SOME的用法,sql查询速度优化,sql运行优化

    PostgreSQL SQL中的ALL,ANY,SOME的用法,sql查询速度优化,sql运行优化 准备两个表: --T1(2,3) --T2(1,2,3,4)--ALL,ANY,SOME 的子查询 ...

最新文章

  1. 模仿Hibernate的逆向工程_java版_源码下载
  2. exchange之2003迁移至2007
  3. Docker的4种网络模式
  4. dotNet中,取得指定日期所在月份的最后一天
  5. SAP Spartacus全局配置里和路由Route相关的配置
  6. linux安装mysql后怎么进去_linux安装mysql详细步骤
  7. 表面上承认错误_做一个可以承认错误的领导者
  8. 计算机文件自动备份到移动硬盘,如何让电脑文件自动备份到指定的邮箱里?或者备份到指定的磁盘里...
  9. 计算机导论操作系统教案,《计算机导论》教案.doc
  10. matlab norm函数使用_「matlabnorm」matlab中norm函数的用法 - 金橙教程网
  11. 项目实训12——解析建表的SQL语句
  12. Java进阶篇之十五 ----- JDK1.8的Lambda、Stream和日期的使用详解(很详细)
  13. Fabled Rooks
  14. 多媒体——视频——利用视频视图VideoView播放视频
  15. linux mv命令的功能,linux常用命令:Linux常用命令之mv命令是什么?
  16. 庄家出货前兆5种情况(风险必看)【转】
  17. 菲律宾苏禄省天主教堂连环爆炸造成20人死81人伤
  18. google colab云服务器使用
  19. APEX论坛 给出的解决方案- APEX闪退问题
  20. 集美大学计算机科学与技术知乎,集美大学

热门文章

  1. shell 小米system锁adb_忘记锁屏密码不用怕?支招小米手机解锁四种简单常用的方法...
  2. tomcat 报错 Status 500 - Mapper method ‘xxxxx‘ has an unsupported return type: class xxx
  3. mysql导数据出现Incorrect string value: '\xF0\x9F\x90\x82'报错
  4. 阿里云有奖调查结果公布,赠送10个阿里巴巴logo胸针...
  5. Hive 内置函数及自定义函数
  6. WEB网站压力测试方案 压力测试如何换算并发用户数
  7. apicloud——云编译失败
  8. 古体字与简体字对照表_常用繁体字与简体字对照表
  9. kali 改root_linux切换到root用户,kali怎么切换root身份运行
  10. 怎么订到特价机票(有可能比火车票还便宜哦)