全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年安全生产法试题题库(含答案)
- 2027届高二化学必修3结构特点与研究方法教案
- 2026年安康市汉滨区网格职员考试题及答案
- 2026年安徽省政府采购评审专家考试真题库(带答案)
- 小学五年级道德与法治主题班会纪律意识记心间教学设计
- 小学三年级音乐《采贝歌》教学设计
- 初中科学八年级上册《水的组成》教学设计
- 初中八年级物理 教学设计 升华与凝华 核心素养视域下的深度学习实践
- 高三地理教学设计:地质地貌形成过程答题策略与核心素养培育
- 九年级化学教学设计:二氧化碳制取性质的实验探究与模型构建
- 丁二烯法己二腈、己二胺生产项目可行性研究报告
- 电梯井内防护措施安全培训
- 马工程《教育学原理》(第二版)完整版教学大纲(官方对标)
- 误吸的预防与管理策略研究-蓝色-教育课件
- 室内装修改造工程安全风险评估报告
- 服装制作工艺SOP
- 2026年湖北省武汉市中考数学试卷(含答案及详解)
- 【新课标】人教版小学数学一年级上册第一单元大单元整体教学设计
- 2026年小学生心理健康教育课件
- 急性喉气管炎护理查房
- 塑料排水板施工方案
评论
0/150
提交评论