group by 及 having 子句使用
来源:互联网 发布:机器人编程入门教程 编辑:程序博客网 时间:2024/05/17 03:55
1. Group by子句(利用group by子句分组数据,当select语句中使用到组函数和字段一起连用时会用到group by,否则会出现错误)
Group by 把select查询的结果集分成几个小组,这个group by子句可以跟在where后面且在having前面。
Group by子句也会触发排序操作,会按分组字段排序。
Select [组函数和分组的字段].....from 表名 group by[字段1],[字段2],。。。。。。;
Oracle sql语句顺序:
a.
b.
c.
d.
e.
说明:其中的[ ]是可选项
注意:group by分组不能用列的别名
注意:只要写了group by子句,select后就只能用group by之后的字段或者是组的函数。Having子句可以过滤组函数结果或者分组的信息,并且写在group by子句后。
使用group by子句时,必须满足下面的一些原则:
l
l
l
l
使用group by 常见的错误:
l
l
注意1:在没有group by时,select后不能把普通字段和组函数同时使用
注意2:where子句只能够过滤记录,放单行函数。Where后面跟随的条件是对所有数据的过滤的条件,在where子句中不能出现组函数。
注意3:如果希望按照多个列分组,那么会在group by子句后面出现多个列名。这些列名称得顺序非常重要。因为不同的顺序有不同的结果。
例子1:查询求各个部门的最小,最高,工资之和
select dept_id,min(salary),max(salary),sum(salary) from s_emp group
例子2:查询求各个部门的最小,最高,工资之和,部门名称
select e.dept_id,d.name,min(salary),max(salary),sum(salary) from s_emp e ,
例3:找出各个部门的平均工资
select dept_id,avg(salary) from s_emp group by dept_id;
例4:求各个部门不同职位有多少人
例5:求除了42部门以外的各个部门的平均工资
例7:求各个部门的平均工资
2. Having子句(是对分组之后的数据进行过滤,所以使用having时必须用group by先分组)
Having中的组函数可以不是select 中的组函数
利用having子句过滤分组的行
注意:having要先过滤掉不需要的记录,然后再进行分组操作,提高效率。having子句可以过滤组函数结果或是分组的信息,且写在group by子句后。
例:求平均工资大于2000的部门
- group by 及 having 子句使用
- group by 及 having 子句使用
- group by 及 having 子句使用
- where子句、group by 子句 、having子句
- [mysql] select的子句 where,group by, having, order by, limit的使用顺序及实例
- group by 和having 子句
- GROUP BY和HAVING子句
- group by与having子句
- 第四节 GROUP BY 和 HAVING 子句
- MYSQL GROUP BY 和 HAVING 子句
- 【SQL】GROUP BY 和HAVING子句
- mysql group by子句 having子句 用法解析(详细)
- sql的sum函数(与group by,having子句混合使用)
- 针对GROUP BY 设置限制条件,则不能使用Where 子句,必须使用HAVING 子句来设置。
- where、group by、having使用
- group by having的使用
- SQL的聚合函数与Group By和Having子句
- SQL Server的GROUP BY和HAVING子句
- 【视频】雅思全程口语考试模拟评分(从3分至8分)
- java 键盘输入方法
- poj1753 枚举
- 快速排序算法及实现
- map与结构体结合使用
- group by 及 having 子句使用
- AJAX
- B. Friends and Presents
- 重定向 1>&2 2>&1
- 连续无空格英文字母或数字自动换行
- android初学------根据日期时间字符串返回date数据 获取年月日
- 织梦DedeCMS列表页、内页调用图集多张图片的方法
- <s:if>标签判断的使用
- hdoj problem 1211 RSA(快速幂求模算法)