首页 小组 文章 相册 留言本 用户 搜索 我的社区 在线学堂 商城 购物车 支付钱包

NNNNNN

2024-05-10 17:06:49
0
35


#查询公司员工工资 最大值 最小值 平均值 总和
SELECT MAX(salary),MIN(salary),AVG(salary),SUM(salary)
FROM employees;
#查询各job_id的员工工资的最大值 最小值 平均值 总和
SELECT job_id,MAX(salary),MIN(salary),AVG(salary),SUM(salary)
FROM employees
GROUP BY job_id;
#选择具有各个job_id的员工人数
SELECT job_id,COUNT(*)
FROM employees
GROUP BY job_id;
#查询员工最高工资和最低工资的差距
SELECT MAX(salary),MIN(salary),MAX(salary)-MIN(salary) chaju
FROM employees;
#查询各个管理者手下员工的最低工资 最低不能低于6000 没有管理者的员工不计算在内
#方式一
SELECT manager_id,MIN(salary)
FROM employees
WHERE manager_id IS NOT NULL
GROUP BY manager_id
HAVING MIN(salary)>6000;
#方式二
SELECT manager_id,MIN(salary)
FROM employees
GROUP BY manager_id
HAVING MIN(salary)>6000 AND manager_id IS NOT NULL;
#查询所有部门的名字 location_id 员工数量 和平均工资 并按平均工资降序
SELECT department_name,location_id,COUNT(*),AVG(salary)
FROM employees e RIGHT JOIN departments d
ON e.department_id = d.department_id
GROUP BY department_name,location_id
ORDER BY AVG(salary) DESC;

SELECT employee_id,salary,department_name,location_id
FROM employees e RIGHT JOIN departments d
ON e.department_id = d.department_id;

#子查询

#谁的工资比abel的高?
#方式一
SELECT salary
FROM employees
WHERE last_name='Abel';

SELECT last_name,salary 
FROM employees
WHERE salary>11000;

#方式二 自连接
SELECT e2.last_name,e2.salary
FROM employees e1,employees e2
WHERE e2.salary>e1.salary
AND e1.last_name='Abel';

#方式三 子查询
SELECT last_name,salary 
FROM employees
WHERE salary> (
								SELECT salary
								FROM employees
								WHERE last_name='Abel'
								);

#称谓的规范:外查询(或主查询)、 内查询(或子查询)

/*
子查询(内查询)在主查询之前一次执行完成

子查询的结果被主查询(外查询)使用

注意事项 子查询要包含在括号内 将子查询放在比较条件的右侧

单行操作符对应单行子查询 多行操作符对应多行子查询

*/

/*
子查询的分类

角度1 从内查询返回的结果条目数

单行子查询vs多行子查询

角度2 内查询是否被执行多次

相关子查询VS 不相关子查询

举例 相关子查询 查询工资大于本部门平均工资的员工信息
		不相关子查询 查询工资大于本公司平均工资的员工信息
*/
评论
意见反馈