1.谁的工资比Abel高
SELECT*FROM employees
WHERE salary>(SELECT salary
FROM employees
WHERE last_name='Abel');2.返回job_id与141号员工相同,salary比143号员工多的员工姓名,
SELECT last_name,job_id,salary
FROM employees
WHERE job_id=(SELECT job_id
FROM employees
WHERE employee_id=141)AND salary>(SELECT salary
FROM employees
WHERE employee_id=143);3.返回公司工资最少的员工的last_name,job_id和salary
SELECT last_name,job_id,salary
FROM employees
WHERE salary=(SELECTMIN(salary)FROM employees
);4.查询最低工资大于50号部门最低工资的部门id和其最低工资
SELECTMIN(salary),department_id
FROM employees
GROUPBY department_id
HAVINGMIN(salary)>(SELECTMIN(salary)FROM employees
WHERE department_id =50);
1.2列子查询(多行子查询)
1.返回location_id是1400或1700的部门中的所有员工姓名
SELECT last_name
FROM employees
WHERE department_id in(SELECTDISTINCT department_id
FROM departments
WHERE location_id IN(1400,1700));2.返回其它岗位中比job_id为‘IT_PROG’岗位任一工资低的员工的员工号、姓名、job_id 以及salary
(1)SELECT last_name,employee_id,job_id,salary
FROM employees
WHERE salary<ANY(SELECTDISTINCT salary
FROM employees
WHERE job_id ='IT_PROG')AND job_id<>'IT_PROG';
(2)SELECT last_name,employee_id,job_id,salary
FROM employees
WHERE salary<(SELECTMAX(salary)FROM employees
WHERE job_id ='IT_PROG')AND job_id<>'IT_PROG';3.返回其它岗位中比job_id为‘IT_PROG’岗位所有工资都低的员工的员工号、姓名、job_id 以及salary
(1)SELECT last_name,employee_id,job_id,salary
FROM employees
WHERE salary<ALL(SELECTDISTINCT salary
FROM employees
WHERE job_id ='IT_PROG')AND job_id<>'IT_PROG';
(2)SELECT last_name,employee_id,job_id,salary
FROM employees
WHERE salary<(SELECTMIN( salary)FROM employees
WHERE job_id ='IT_PROG')AND job_id<>'IT_PROG';
1.查询每个部门的员工个数
SELECT d.*,(SELECTCOUNT(*)FROM employees e
WHERE e.department_id = d.`department_id`) 个数
FROM departments d;2.查询员工号=102的部门名
SELECT(SELECT department_name
FROM departments d
INNERJOIN employees e
ON d.department_id=e.department_id
WHERE e.employee_id=102) 部门名;3.查询员工信息,并显示出员工所属的部门名称
#第一种做法,将员工表和部门表连接select e.ename, d.dname from emp e, dept d where e.deptno=d.deptno;#第二种做法,在select语句中再次嵌套select语句完成部分名称的查询select e.ename,(select d.dname from dept d where e.deptno=d.deptno)as dname from emp e;
3、from后面
1.查询每个部门的平均工资的工资等级
SELECT ag_dep.*,g.`grade_level`FROM(SELECTAVG(salary) ag,department_id
FROM employees
GROUPBY department_id
) ag_dep
INNERJOIN job_grades g
ON ag_dep.ag BETWEEN lowest_sal AND highest_sal;
4.exists后面
1.查询有员工的部门名
(1)inSELECT department_name
FROM departments d
WHERE d.`department_id`IN(SELECT department_id
FROM employees
)
(2)existsSELECT department_name
FROM departments d
WHEREEXISTS(SELECT*FROM employees e
WHERE d.`department_id`=e.`department_id`);2.查询没有女朋友的男神信息
(1)inSELECT department_name
FROM departments d
WHERE d.`department_id`IN(SELECT department_id
FROM employees
)
(2)existsSELECT department_name
FROM departments d
WHEREEXISTS(SELECT*FROM employees e
WHERE d.`department_id`=e.`department_id`);