全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
sqlserver常用查询聚合函数与GROUP BY与HAVING的用法2009年05月06日 星期三 下午 02:42在介绍GROUP BY 和 HAVING 子句前,我们必需先讲讲sql语言中一种特殊的函数:聚合函数,例如SUM, COUNT, MAX, AVG等。这些函数和其它函数的根本区别就是它们一般作用在多条记录上。SELECT SUM(population) FROM bbc这里的SUM作用在所有返回记录的population字段上,结果就是该查询只返回一个结果,即所有国家的总人口数。通过使用GROUP BY 子句,可以让SUM 和 COUNT 这些函数对属于一组的数据起作用。当你指定 GROUP BY region 时, 属于同一个region(地区)的一组数据将只能返回一行值,也就是说,表中所有除region(地区)外的字段,只能通过 SUM, COUNT等聚合函数运算后返回一个值。HAVING子句可以让我们筛选成组后的各组数据,WHERE子句在聚合前先筛选记录也就是说作用在GROUP BY 子句和HAVING子句前而 HAVING子句在聚合后对组记录进行筛选。让我们还是通过具体的实例来理解GROUP BY 和 HAVING 子句,还采用第三节介绍的bbc表。SQL实例:一、显示每个地区的总人口数和总面积:SELECT region, SUM(population), SUM(area)FROM bbcGROUP BY region先以region把返回记录分成多个组,这就是GROUP BY的字面含义。分完组后,然后用聚合函数对每组中的不同字段(一或多条记录)作运算。二、 显示每个地区的总人口数和总面积仅显示那些面积超过1000000的地区。SELECT region, SUM(population), SUM(area)FROM bbcGROUP BY regionHAVING SUM(area)1000000在这里,我们不能用where来筛选超过1000000的地区,因为表中不存在这样一条记录。相反,HAVING子句可以让我们筛选成组后的各组数据假设表的字段为depart_id, depart_name, employeename,查询具有depart_id的记录数大于2的所有记录的depart_id,和总数,正确的语句应为:select depart_id, count(*)from departgroup by departIdhaving count(*)=2 注意:先分组在算count 下面还有2个例子: 例:查询出现过2次的user。往往初学者会错误地认为在where 语句里直接使用count()算法,很显然这个想法是错误的,count()方法并不能被用在where子句中,为了解决问题,我们可以在group by子句后面使用HAVING来做条件限制。错误做法:select * from user_num where count(user)2 group by user;正确做法:select * from user_num group by user HAVING count(user)2 ;解释说明:HAVING 与 WHERE 类似,可用来决定选择哪些记录。HAVING 子句在SELECT语句中指定,显示哪些已用 GROUP BY 子句分组的记录。在GROUP BY组合了记录后, HAVING会显示 GROUP BY 子句分组的任何符合 HAVING 子句的记录。 例:查询单一用户的num总和大于10的用户。有前面的经验,把sum()方法写在HAVING子句中。正确做法:select * from user_num group by user HAVING sum(num)10 ;注意:一个HAVING子句最多只能包含40个表达式,HAVING子句的表达式之间可以用AND和OR分割。如果count后面是(*),就是任意一个或多个字段有重复记录时候,他就count。若指定字段,则当指定字段有重复的时候数。如果多条记录(不是相同,即两组不同的记录重复),则返回的记录集合是总共的。下面是几个常用的查询语句供参考按时间查询的一个SQL语句(一个阶段)select * from 表名 where 时间 between 2008-09-20 and 2008-09-24 order by indate分组查询(按用户名分组为一组查询所发的文章总数)having与where相似但是这里不能用whereselect 用户名字,count(文章) as 发贴数 from 表名group by 用户名字 having count(文章)1!在select语句中,where、group by、having子句和统计
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年合作经营协议:企业间互惠共赢承包合同
- 八年级英语下册 Unit 4 Why don't you talk to your parents Section B第4课时(2a-2e)教案(新版)人教新目标版
- 机器人视觉建模课程设计
- 机器人碰撞课程设计
- 机器人武器系列课程设计
- 机器人手爪课程设计
- 机器人卡片课程设计
- 本质安全电源课程设计
- 金融服务投标案列分析方案
- 本溪水洞地质研究报告
- 2024-2030年再生医学市场发展行情监测及前景运营态势趋向研判研究报告
- 2020年山东烟台中考满分作文《就这样被打动》9
- 2024-2030年中国盾构机行业发展趋势与投资策略建议报告
- 期中核心素质卷(试题)-2024-2025学年数学六年级上册北师大版
- 2024年重庆高考化学试题卷(含答案解析)
- 《Photoshop图像处理》5.《滤镜特效技巧的学习》试卷
- 坚持人民至上以人民为中心心得体会三篇
- 初中足球运球技术教案
- 华为HCIA OpenEuler H12-611认证必考试复习题库(含答案)
- 2024-2030年中国原油行业发展趋势及发展前景研究报告
- 2024年秋季学期新人教版生物七年级上册课件 第三章 微生物 2.3.4 病毒
评论
0/150
提交评论