也许你对数据库的语法很清楚了,但是给你一个数据库的查询问题你却写不出来,或者要很长时间才能写出来,这里面是有一些技巧的总的来说就是下面的几句话:
记录值值指定的是where条件
列值指定的是group条件
统计值指定的是having条件
排序指定的是order by条件
而他们在查询语句中出现的先后顺序也是像上面那样的顺序
示例:
--1.列出emp表中各部门的部门号, 部门,最高工资,最低工资
分析:这里面的列指定的是部门,所以要按照部门进行分组查询的是最高和最低值所以要使用聚合函数min()和max()
select e.deptno,d.dname,max(e.sal),min(e.sal)
from emp e,dept d
where e.deptno = d.deptno group by e.deptno,d.dname
--2.列出emp表中各部门job为'CLERK'的员工的最低工资,最高工资
分析:job指定了具体值所以是需要把它作为where条件的,而又提到了部门,所以需要按照部门进行分组
select deptno,min(sal),max(sal)
from emp
where job = 'CLERK' group by deptno
--3.对于emp中最低工资小于3000的部门,
--列出job为'CLERK'的员工的部门号,最低工资,最高工资
分析:最低工资(统计值)值指定了having条件,而job值指定了where条件,而部门指定了分组条件
select deptno,min(sal),max(sal)
from emp
where job = 'CLERK'
group by deptno having min(sal)<3000;