`
quanhy5
  • 浏览: 59285 次
  • 性别: Icon_minigender_1
  • 来自: 陕西
社区版块
存档分类
最新评论

GROUP BY,WHERE,HAVING之间的区别和用法 (zhuan)

阅读更多
having子句与where有相似之处但也有区别,都是设定条件的语句。
在查询过程中聚合语句(sum,min,max,avg,count)要比having子句优先执行.而where子句在查询过程中执行优先级别优先于聚合语句(sum,min,max,avg,count)。
简单说来:
where子句:
select sum(num) as rmb from order where id>10//只有先查询出id大于10的记录才能进行聚合语句

having子句:
select reportsto as manager, count(*) as reports from employees group by reportsto having count(*) > 4
以northwind库为例.having条件表达示为聚合语句。肯定的说having子句查询过程执行优先级别低于聚合语句。
再换句说话说把上面的having换成where则会出错。统计分组数据时用到聚合语句。
对分组数据再次判断时要用having。如果不用这些关系就不存在使用having。直接使用where就行了。
having就是来弥补where在分组数据判断时的不足。因为where执行优先级别要快于聚合语句。

聚合函数,这是必需先讲的一种特殊的函数:
例如SUM, COUNT, MAX, AVG等。这些函数和其它函数的根本区别就是它们一般作用在多条记录上。
SELECT SUM(population) FROM tablename这里的SUM作用在所有返回记录的population字段上,结果就是该查询只返回一个结果,即所有国家的总人口数。 通过使用GROUP BY 子句,可以让SUM 和 COUNT 这些函数对属于一组的数据起作用。
当你指定 GROUP BY region 时, 属于同一个region(地区)的一组数据将只能返回一行值.
也就是说,表中所有除region(地区)外的字段,只能通过 SUM, COUNT等聚合函数运算后返回一个值.
HAVING子句可以让我们筛选成组后的各组数据.HAVING子句在聚合后对组记录进行筛选而WHERE子句在聚合前先筛选记录.也就是说作用在GROUP BY 子句和HAVING子句前看下面这几个例子吧:

一、显示每个地区的总人口数和总面积.
SELECT region, SUM(population), SUM(area)
FROM bbc
GROUP BY region
先以region把返回记录分成多个组,这就是GROUP BY的字面含义。分完组后,然后用聚合函数对每组中的不同字段(一或多条记录)作运算。

二、 显示每个地区的总人口数和总面积.仅显示那些面积超过1000000的地区。
SELECT region, SUM(population), SUM(area)
FROM bbc
GROUP BY region
HAVING SUM(area)>1000000
在这里,我们不能用where来筛选超过1000000的地区,因为表中不存在这样一条记录。相反,HAVING子句可以让我们筛选成组后的各组数据

来自: http://hi.baidu.com/zhangfeiadts/blog/item/464039d35e42c10a3bf3cf70.html
分享到:
评论

相关推荐

    gssdgv-zhuan-ke-master_java_

    要开始使用gssdgv-zhuan-ke-master_java_,开发者需要熟悉Spring Boot的基本用法,然后引入蚂蚁集团提供的相关依赖。框架提供了一系列的配置选项和API,开发者可以通过阅读官方文档和示例代码来快速上手。在实际...

    zhuan 2.zip

    综上所述,"zhuan 2.zip"提供的抽奖程序是一个基于JavaScript的移动端应用,具备良好的交互性和灵活性。通过JSON文件管理奖品,可与服务器接口对接,同时支持预设中奖选项。这个项目对于学习和理解移动端交互设计、...

    Map_out.rar_Map o_mapgis_mapgis noteo_mapgis zhuan jpg_out

    在C++或类似的编程语言中,头文件通常用于在不同的源文件之间共享函数接口和类定义,以便在编译时进行链接。 在实际操作中,这样的转换可能涉及到以下几个步骤: 1. 导入MapGIS的数据:使用MapGIS提供的API读取地图...

    zhuan_java_untilgw8_android_

    标题 "zhuan_java_untilgw8_android_" 暗示了这是一个关于使用Java语言在UntilGW8平台上开发Android游戏的项目,特别是一款简单的打砖块游戏。在这个项目中,我们可以深入学习到Java编程语言、Android应用开发的基础...

    自媒体新媒体软件工具自媒体zhuan钱秘诀资料

    自媒体新媒体软件工具自媒体zhuan钱秘诀资料

    z zhuan sec_EH4_EH4Z文件转SEC文件_

    EH4和EH4Z文件格式是恩智浦(NXP)半导体公司为其微控制器产品(如LPC系列)所使用的固件文件格式。这些文件包含了可以烧录到微控制器闪存中的机器代码和数据,用于执行特定功能。而SEC(Secure Executable)文件...

    2.6.14 内核移植说明文档(zhuan)

    其目的是简化新存储设备驱动程序的开发,为硬件和上层软件之间提供一个抽象的接口。 - **配置选项**: - `Memory Technology Device (MTD) support`: 这里需要启用MTD分区支持(`[*] MTD partitioning support`)。 -...

    ban-zhuan.zip_JAVA穷举法搬砖_搬砖_用JAVA穷举法

    在编程领域,穷举法(Brute Force)是一种常见的解决问题的方法,它通过尝试所有可能的解决方案来找到正确答案。在给定的“ban-zhuan.zip_JAVA穷举法搬砖”主题中,我们面对的是一个数学问题,该问题与实际的砖块...

    zhuan-su-eliang.rar_labview 测_labview 测速_labview测速_labview转速测量_转

    在给定的“zhuan-su-eliang.rar”压缩包中,包含了一个名为“zhuan su eliang.vi”的虚拟仪器(VI),这显然是一款用于转速测量的应用程序。 转速测量是机械工程、汽车工业、电力系统等领域中常见的技术需求。...

    soho网络zhuan钱的体会.doc

    文档标题和描述中提到的是关于个人通过SOHO(Small Office Home Office)网络工作赚钱的体验,标签为“技术”,这表明讨论的核心是如何利用网络技术和自我经营来赚取收入。部分内容中,作者分享了自己从怀疑到加入...

    XUAN-ZHUAN-led.zip_旋转LED_旋转LED 自适应_自适应旋转LED

    开发者可能使用它来编写底层驱动和控制逻辑,以实现旋转LED的自适应控制。 总的来说,这个项目涉及到硬件接口编程、实时系统设计、运动控制理论以及图形显示技术等多个IT领域的知识。通过分析和优化这段代码,我们...

    zhuan-kai-fa

    4. **敏捷开发**:这是一种灵活且迭代的项目管理方法,强调快速反馈和持续改进。Scrum和Kanban是敏捷开发的常见实践框架。 5. **测试**:单元测试、集成测试和系统测试是保证代码质量的重要环节。JUnit、pytest、...

    ann(zhuan).rar_ANN

    本人转的别人写的人工神经网络的学习体会与感受,真是受益匪浅啊!

    Android图片Bitmap和字符串String之间的相互转换

    在Android开发中,处理图像数据是一项常见的任务,而Bitmap和String是两个核心的数据类型,分别代表位图图像和文本字符串。Bitmap对象用于存储和显示图像,而String则常用于保存和传输文本信息。本篇文章将深入探讨...

    pdfzhuantxt.rar_pdf txt_pdf zhuan txt_pdfzhuant_pdf转txt_txt转pdf

    这个压缩包内的“pdf转txt格式”程序可能是命令行工具或图形界面应用,具体使用方法可能需要参照程序附带的说明文件。在使用前,确保了解软件的兼容性,支持的PDF版本以及转换质量,以满足自己的需求。 总的来说,...

    office2003转2007

    总之,“Office2003转2007”涉及的是解决Office软件版本之间的兼容性问题,让用户能够在旧版本的软件中打开和编辑使用新版本创建的文件。这通常通过安装兼容性包或转换工具来实现,如“office2003转2007.exe”这样的...

    zhuan8.rar_kinect_人工势场法

    主要用于路径规划,程序读入之初,需要先读入Kinect相机拍摄的深度图像。

    C#代码重构 - Mr.Fu _Zhuan.mobi

    重构是迅速发现并修复有问题的代码的一种高效的方式。在《代码重构(c # & asp.net版)》中首次提供了在c#和asp.net中进行重构的专业方法,您将学习如何运用重构技术管理和修改代码

    snake-master-cuda8-zhuan_pt.tar

    Deep Snake for Real-Time Instance Segmentation pytorch1.0 cuda8转6个pt

    PDF转换成word.

    ### PDF转换成Word文档的相关知识点 #### 一、PDF与Word文档的基本概念 ...虽然这两种方法各有优劣,但在不同的应用场景下都能发挥重要作用。在实际操作中,根据具体的文档内容和需求选择合适的转换工具是非常重要的。

Global site tag (gtag.js) - Google Analytics