14、oracle:where,group by,having,order by
来源:互联网 发布:淘宝文字主图素材 编辑:程序博客网 时间:2024/05/21 09:49
oracle中的where,group by,having,order by很容易混淆和弄错,这里找到一篇很好的文章
本文来自:http://dong-shuai22-126-com.iteye.com/blog/1564971
"group by 字段列表"
表示根据后面的字段来分组,如果只有1个字段,那只是根据这个字段的值来进行一次分组就可以了;若后面有多个字段,那表示根据多字段的值来进行层次分组,分组层次从左到右,即先按第1个字段分组,然后在第1个字段值相同的记录中,再根据第2个字段的值进行分组;接着第2个字段值相同的记录中,再根据第3个字段的值进行分组......依次类推。
一.数据分组(group by ):
select 列a,聚合函数(聚合函数规范) from 表明
where 过滤条件
group by 列a
group by 字句也和where条件语句结合在一起使用。当结合在一起时,where在前,group by 在后。即先对select xx from xx的记录集合用where进行筛选,然后再使用group by 对筛选后的结果进行分组。
二.使用having字句对分组后的结果进行筛选,语法和where差不多:having 条件表达式
需要注意having和where的用法区别:
1.having只能用在group by之后,对分组后的结果进行筛选(即使用having的前提条件是分组)。
2.where肯定在group by 之前,即也在having之前。
3.where后的条件表达式里不允许使用聚合函数,而having可以。
三、当一个查询语句同时出现了where,group by,having,order by的时候,执行顺序和编写顺序是:
1.执行where xx对全表数据做筛选,返回第1个结果集。
2.针对第1个结果集使用group by分组,返回第2个结果集。
3.针对第2个结果集中的每1组数据执行select xx,有几组就执行几次,返回第3个结果集。
4.针对第3个结集执行having xx进行筛选,返回第4个结果集。
5.针对第4个结果集排序。
例子:
完成一个复杂的查询语句,需求如下:
按由高到低的顺序显示个人平均分在70分以上的学生姓名和平均分,为了尽可能地提高平均分,在计算平均分前不包括分数在60分以下的成绩,并且也不计算贱人(jr)的成绩。
分析:
1.要求显示学生姓名和平均分
因此确定第1步select s_name,avg(score) from student
2.计算平均分前不包括分数在60分以下的成绩,并且也不计算贱人(jr)的成绩
因此确定第2步 where score>=60 and s_name!=’jr’
3.显示个人平均分
相同名字的学生(同一个学生)考了多门科目 因此按姓名分组
确定第3步 group by s_name
4.显示个人平均分在70分以上
因此确定第4步 having avg(s_score)>=70
5.按由高到低的顺序
因此确定第5步 order by avg(s_score) desc
- 14、oracle:where,group by,having,order by
- oracle-where,group by,having order by 详细使用方法
- sql where group by having order by
- WHERE 、GROUP BY,HAVING、ORDER BY、LIME
- oracle group by ,having ,order by
- 关于group by 、group by having、where group by与 group by order by
- where group by having
- group by having where
- SQL中的Where,Group By,Order By和Having
- mysql的group by、order by和having、where比较
- Group by,order by,having 和where的顺序
- where、having、group by、order by的顺序
- SQL数据库 group by 、having 、where 、order by用法区别
- sql篇 select from where group by having order by
- select、from、where、group by、having、order by执行顺序
- Group By 和 Having, Where ,Order by的执行顺序
- mysql中的group by,having,order by,where用法
- oracle查询语句中select from where group by having order by的解释与应用
- Git分支
- android 常见颜色值(16制颜色码)
- 79. Word Search
- PL/SQL developer登录问题
- 欢迎使用CSDN-markdown编辑器
- 14、oracle:where,group by,having,order by
- 抓包工具之fiddler的使用:抓取手机中的数据
- JavaScript正则表达式
- C++写#pragma warning(disable 4786)的作用
- Java并发编程中的三个概念
- Tomcat源码解析(6)
- list
- Git版本切换
- android studio加载RecyclerView,找不到RecyclerView的问题