SQL 中having 和where的区别
group by
在select 语句中可以使用group by 子句将行划分成较小的组,然后,使用聚组函数返回每一个组的汇总信息,另外,可以使用having子句限制返回的结果集。group by 子句可以将查询结果分组,并返回行的汇总信息Oracle 按照group by 子句中指定的表达式的值分组查询结果。
在带有group by 子句的查询语句中,在select 列表中指定的列要么是group by 子句中指定的列,要么包含聚组函数
select max(sal),job emp group by job;
(注意max(sal), job 的job并非一定要出现,但有意义 )
查询语句的select 和group by ,having 子句是聚组函数唯一出现的地方,在where 子句中不能使用聚组函数。
select deptno,sum(sal) from emp where sal>1200 group by deptno having sum(sal)>8500 order by deptno;
当在gropu by 子句中使用having 子句时,查询结果中只返回满足having条件的组。在一个sql语句中可以有where子句和having子句。having 与where 子句类似,均用于设置限定条件
where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,条件中不能包含聚组函数,使用where条件显示特定的行。
having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件显示特定的组,也可以使用多个分组标准进行分组。
查询每个部门的每种职位的雇员数
select deptno,job,count(*) from emp group by deptno,job;
如果你对何时应该使用WHERE,何时使用HAVING仍旧很迷惑,请遵照下面的说明:
WHERE语句在GROUP BY语句之前;SQL会在分组之前计算WHERE语句。
HAVING语句在GROUP BY语句之后;SQL会在分组之后计算HAVING语句。
相关文档:
系统环境:Windows 7
软件环境:Visual C++ 2008 SP1 +SQL Server 2005
本次目的:编写一个航空管理系统
这是数据库课程设计的成果,虽然成绩不佳,但是作为我用VC++ 以来编写的最大程序还是传到网上,以供参考。用VC++ 做数据库设计并不容易,但也不是不可能。以下是我的程序界面,后面 ......
我发现自己理解起sql语句来很困难,今天看了一本书,顿时茅塞顿开,贴出来和大家分享一下
select语句执行顺序
(7)SELECT (8)DISTINCT (10)<TOP_specification> <select_list>
(1)from <left_table>
(3) <join_t ......
50个Sql语句,仅供学习!
Student(S#,Sname,Sage,S***) 学生表
Course(C#,Cname,T#) 课程表
SC(S#,C#,score) 成绩表
Teacher(T#,Tname) 教师表
问题:
1、查询“001”课程比“002”课程成绩高的所有学生的学号;
select a.S# from (select s#,score from SC ......
MS SQL SERVER数据库备份BAK还原数据库
由于数据误操作,想恢复一下操作前的数据。于是新建了一个空数据库。使用原来的备份文件 bak。来恢复成一个新的数据库。这样就可以手动恢复数据了。
但是在恢复新建数据库的时候总是不成功,提示错误入下:
The backup set holds a backup of a database other than the existing ......
Knowledge Xpert® for PL/SQL 是一个功能强大的基于Windows的技术资源库,它覆盖PL/SQL 开发的整个生命周期,上千种专题提供编写高质量代码所需要的背景信息、最好的经验和程序范例。
提供上千种专题,覆盖PL/SQL 编程的整个生命周期,从基本的专题到高级的PL/SQL 编码技术。
由包括Mike Ault、Steven Feuerstein、 ......