1. Verifique el nombre completo, el correo electrónico y el número de teléfono del empleado.
SELECT
concat(first_name,',',last_name),email,phone_int
//将employees表的所有员工的last_name和first_name拼接起来作为Name
FROM employees;
2. Consultar el nombre completo, salario mensual y salario anual de todos los empleados (salario mensual * 12)
SELECT
first_name,last_name,salary,salary*12
FROM employees;
3. Consultar el nombre completo, salario mensual y bonificación de fin de año de todos los empleados (salario anual * comisión_pct)
SELECT
first_name,last_name,salary,salary*12*ifnull(commission_pct,0)
//IFNULL函数是MySQL控制流函数之一,它接受两个参数,如果不是NULL,则返回第一个参数。否则,IFNULL函数返回第二个参数。
//佣金百分比 (CommissionPCT)但是佣金百分比,数据库里employees表里的一个列。
FROM employees;
4. Compruebe qué departamentos y puestos tienen empleados
SELECT DISTINCT department_id,job_id from employees WHERE department_id is not null
//SELECT DISTINCT用于返回唯一不同的值
5. Consultar la información de los empleados que se incorporaron a la empresa después de 1999
SELECT first_name,last_name,hire_date FROM employees WHERE year(hire_date) >= '1999'
Seis, consulta la información del jefe de la empresa.
SELECT first_name,last_name FROM employees WHERE manager_id IS NULL
7. Consultar toda la información de los empleados, ordenar por departamento y salario anual en orden descendente;
SELECT first_name,last_name,salary*12 as total FROM employees ORDER BY department_id,total DESC
//ORDER BY 关键字用于对结果集按照一个列或者多个列进行排列。
//ORDER BY 关键字默认按照升序进行排序。DESC降序
8. Cifre el nombre de usuario, conserve los primeros 3 dígitos del nombre completo del empleado y reemplace los 4 dígitos del medio con *. Si hay caracteres adicionales en el nombre, guárdelo;
SELECT concat(RPAD(substring(concat(first_name,last_name),1,3),7,'*'),
SUBSTRING(concat(first_name,last_name),8))
FROM employees
9. Calcule el nombre del empleado y su salario completo;
SELECT first_name,last_name,salary,salary*12*(1+ifnull(commission_pct,0)) FROM employees
10. Consultar la identificación de departamento del empleado, si no hay departamento, imprimir "Departamento no asignado"
SELECT first_name,last_name,ifnull(department_id,'未分配部门') FROM employees
11. Consultar el salario medio de cada departamento
SELECT department_id,AVG(salary) FROM employees WHERE department_id is not null GROUP BY department_id
12. Consultar los departamentos con salario promedio superior a 8000 y su salario promedio
SELECT department_id,AVG(salary) FROM employees WHERE department_id is not null GROUP BY department_id HAVING AVG(salary)>=8000
Trece, consulta la cantidad de veces que los empleados han cambiado de trabajo
SELECT employee_id,COUNT(employee_id) FROM job_history GROUP BY employee_id
14. Consultar cuántas personas ingresaron a la empresa en 1995, 96, 97 y 98
SELECT year(hire_date),count(employee_id)
FROM employees
WHERE YEAR(hire_date) in ('1995','1996','1997','1998')
GROUP BY YEAR(hire_date)
15. Escriba el nombre del empleado, la identificación del empleado y el departamento al que pertenece el empleado.
SELECT first_name,last_name,department_name FROM employees e JOIN departments d ON e.department_id = d.department_id
16. Salida de información del empleado, incluido el ID del empleado, el nombre,
department_id, department_name location_id city
SELECT e.employee_id,e.first_name,d.department_id,d.department_name,l.location_id,l.city
FROM employees e JOIN departments d ON e.department_id = d.department_id JOIN locations l ON d.location_id = l.location_id
17. Todos los salarios en la tabla EMPLOYEES están entre el salario más bajo y el salario más alto en la tabla JOB_GRADES.
SELECT e.first_name,e.last_name,e.salary
FROM employees e,job_grades j
WHERE e.salary BETWEEN j.lowest_sal AND j.highest_sal
SELECT e.first_name,e.last_name,e.salary
FROM employees e JOIN job_grades j ON e.salary BETWEEN j.lowest_sal AND j.highest_sal
18. Consultar el nombre, departamento, dirección y ciudad de todos los empleados con bonificaciones.
SELECT e.employee_id,e.first_name,d.department_id,d.department_name,l.location_id,l.city
FROM employees e JOIN departments d ON e.department_id = d.department_id JOIN locations l ON d.location_id = l.location_id
WHERE e.commission_pct IS NOT NULL
19. Consultar la información del gerente del empleado cuyo apellido es 'Ki'
SELECT first_name,last_name FROM employees WHERE employee_id IN (SELECT manager_id FROM employees WHERE last_name LIKE 'Ki%')
//IN操作符允许where子句中规定多个值
//LIKE操作符用于WHERE子句中搜索列中的指定模式
Veinte, consulta la información del empleado con el salario más bajo de la empresa
SELECT first_name,last_name,salary FROM employees WHERE salary = (SELECT MIN(salary) FROM employees)
21. Consultar al empleado con el salario más alto de todos los empleados de la empresa desde 1999
SELECT first_name,last_name,hire_date,salary
FROM employees WHERE salary=
(SELECT MAX(salary) FROM employees WHERE year(hire_date)='1999')
AND year(hire_date) = '1999'
//WHERE子句用于过滤记录
.22. Consultar la información de los empleados que han realizado ST_CLERK
SELECT e.first_name,e.last_name,j.job_id FROM employees e JOIN job_history j ON e.employee_id = j.employee_id WHERE j.job_id = 'ST_CLERK'