-- #--1.查询员工表所有数据
SELECT * FROM employees;
-- #--2.打印公司里所有的manager_id
SELECT manager_id FROM employees;
-- #--3.查询所员工的email全名,公司email 统一以 "@zpark.cn" 结尾
SELECT CONCAT(LOWER(EMAIL),'@zpark.cn') as email FROM employees ;
-- #--4.按照入职日期由新到旧 排列员工信息
DESC employees;
SELECT * FROM employees ORDER BY CAST(HIRE_DATE AS DATE) DESC;
-- #--5.查询80号部门的所有员工
SELECT * FROM employees WHERE DEPARTMENT_ID=80;
-- #--6.查询50号部门每人增长1000元工资之后的人员姓名及工资
SELECT FIRST_NAME,LAST_NAME,SALARY+1000 as SALARY FROM employees WHERE DEPARTMENT_ID =50;
-- #--7.查询80号部门工资大于7000的员工的全名与工资
select CONCAT(FIRST_NAME,LAST_NAME),SALARY FROM employees WHERE SALARY>=7000 and DEPARTMENT_ID=80;
-- #--8.查询80号部门工资大于8000并且提成高于0.3的员工姓名,工资以及提成
SELECT CONCAT(FIRST_NAME,LAST_NAME),SALARY,COMMISSION_PCT FROM employees WHERE SALARY >=8000 anD COMMISSION_PCT > 0.3;
-- #--9.查询职位(job_id)为'AD_PRES'的员工的工资
SELECT CONCAT(FIRST_NAME,LAST_NAME),SALARY FROM employees WHERE job_id='AD_PRES';
-- #--10.查询佣金(commission_pct)为0或为NULL的员工信息
SELECT * FROM employees WHERE commission_pct=0 or commission_pct is NULL;
-- #--11.查询入职日期在1997-5-1到1997-12-31之间的所有员工信息
SELECT EMPLOYEE_ID,STR_TO_DATE(HIRE_DATE,'%d-%b-%y') FROM employees
WHERE STR_TO_DATE(HIRE_DATE,'%d-%b-%y')
> STR_TO_DATE(1997-5-1,'%d-%b-%y');
-- #--12.显示姓名中没有'L'字的员工的详细信息或含有'SM'字的员工信息
SELECT * FROM employees
WHERE CONCAT(FIRST_NAME,LAST_NAME) not LIKE '%L%' or
CONCAT(FIRST_NAME,LAST_NAME) LIKE '%SM%';
-- #--13.查询电话号码以5开头的所有员工信息
SELECT * FROM employees WHERE PHONE_NUMBER LIKE '5%'
-- #--14.查询80号部门中last_name以n结尾的所有员工信息
SELECT * FROM employees WHERE DEPARTMENT_ID=80 AND LAST_NAME LIKE '%n';
-- #--15.查询所有last_name 由六个以上字母组成的员工信息且包含字母D
SELECT * FROM employees WHERE CHAR_LENGTH(LAST_NAME)>=6 and LAST_NAME LIKE '%D%';
-- #--1.把hiredate列看做是员工的生日,查询本月过生日的员工
SELECT * FROM employees WHERE mid(STR_TO_DATE(HIRE_DATE,'%d-%b-%y'),6,2)=12;
-- #--3.查询1997年下半年入职的员工
SELECT * FROM employees WHERE mid(STR_TO_DATE(HIRE_DATE,'%d-%b-%y'),6,2)>6
AND mid(STR_TO_DATE(HIRE_DATE,'%d-%b-%y'),1,4) BETWEEN 1997 and 1997
-- #--4.打印自己出生了多少天
SELECT DATEDIFF(2019/12/9,1996/4/21) FROM employees
-- #--5.打印入职时间超过10年的员工信息
-- #--1.显示各种职位的最低工资
SELECT JOB_ID,min(SALARY) FROM employees GROUP BY JOB_ID;
-- #--2.求1997年各个月入职的的员工个数
SELECT mid(STR_TO_DATE(HIRE_DATE,'%d-%b-%y'),6,2),COUNT(START_DATE)
FROM employees LEFT JOIN job_history
on employees.EMPLOYEE_ID=job_history.EMPLOYEE_ID
WHERE LEFT(STR_TO_DATE(HIRE_DATE,'%d-%b-%y'),4)=1997
GROUP BY mid(STR_TO_DATE(START_DATE,'%d-%b-%y'),6,2);
-- #--3.查询每个部门,每种职位的最高工资
SELECT DEPARTMENT_ID,JOB_ID,MAX(SALARY) FROM employees GROUP BY DEPARTMENT_ID,JOB_ID;
-- #--4.查询各部门的总工资
SELECT DEPARTMENT_ID,sun(SALARY) FROM employees GROUP BY DEPARTMENT_ID;
-- #--5.查询50号部门,60号部门,70号部门的平均工资
SELECT DEPARTMENT_ID,AVG(SALARY) FROM employees WHERE DEPARTMENT_ID in (60,50,70) GROUP BY DEPARTMENT_ID;
-- #--6.查询各部门的最高工资,最低工资
SELECT DEPARTMENT_ID,MAX(SALARY),min(SALARY) FROM employees GROUP BY DEPARTMENT_ID;
-- #--7.查询各岗位的员工总数
SELECT JOB_ID,COUNT(JOB_ID) FROM employees GROUP BY JOB_ID;
-- #--8.查询各部门中各个岗位的平均工资
SELECT DEPARTMENT_ID,JOB_ID,SUM(SALARY)/COUNT(JOB_ID) 平均工资 FROM employees GROUP BY DEPARTMENT_ID,JOB_ID;
-- #--9.查询平均工资高于8000元的部门的最高工资
SELECT DEPARTMENT_ID,MAX(SALARY) 最高工资,SUM(SALARY)/COUNT(DEPARTMENT_ID) 平均工资
FROM employees GROUP BY DEPARTMENT_ID HAVING SUM(SALARY)/COUNT(DEPARTMENT_ID)>8000;
-- #--10.统计公司里经理的人数
SELECT COUNT(employees.JOB_ID) FROM
employees
LEFT JOIN jobs on employees.JOB_ID=jobs.JOB_ID WHERE jobs.JOB_TITLE LIKE '%manager%';
-- 1. 查询每个月倒数第2 天入职的员工的信息.
--
-- 2. 查询出last_name 为 'Chen' 的 manager 的信息.
SELECT * FROM employees LEFT JOIN jobs on employees.JOB_ID=jobs.JOB_ID
WHERE last_name LIKE '%chen%' and jobs.JOB_TITLE LIKE '%manager%';
--
-- 3. 查询平均工资高于8000 的部门 id 和它的平均工资.
SELECT DEPARTMENT_ID,AVG(SALARY) 平均工资 FROM employees GROUP BY DEPARTMENT_ID HAVING 平均工资>=8000;
-- 4. 查询工资最低的员工信息:last_name, salary
SELECT LAST_NAME,SALARY FROM employees ORDER BY SALARY asc LIMIT 1;
-- 5. 查询平均工资最低的部门信息
SELECT departments.*,sum(SALARY)/COUNT(SALARY) 平均工资 FROM employees
LEFT JOIN departments on employees.DEPARTMENT_ID=departments.DEPARTMENT_ID
GROUP BY employees.DEPARTMENT_ID ORDER BY 平均工资 LIMIT 1;
-- 6. 查询平均工资最低的部门信息和该部门的平均工资
SELECT departments.*,sum(SALARY)/COUNT(SALARY) 平均工资 FROM employees
LEFT JOIN departments on employees.DEPARTMENT_ID=departments.DEPARTMENT_ID
GROUP BY employees.DEPARTMENT_ID ORDER BY 平均工资 LIMIT 1;
-- 7. 查询平均工资最高的job 信息
SELECT jobs.*,sum(SALARY)/COUNT(SALARY) 平均工资 FROM employees
LEFT JOIN jobs on employees.JOB_ID=jobs.JOB_ID
GROUP BY employees.JOB_ID ORDER BY 平均工资 DESC LIMIT 1;
-- 8. 查询平均工资高于公司平均工资的部门有哪些?
SELECT departments.*,sum(SALARY)/COUNT(SALARY) 部门平均工资,(SELECT SUM(SALARY)/COUNT(SALARY) FROM employees) as 公司平均工资
FROM employees
LEFT JOIN departments on employees.DEPARTMENT_ID=departments.DEPARTMENT_ID
GROUP BY employees.DEPARTMENT_ID HAVING 部门平均工资 > 公司平均工资;
-- 9. 查询出公司中所有manager 的详细信息.
SELECT * FROM employees LEFT JOIN jobs on employees.JOB_ID=jobs.JOB_ID WHERE jobs.JOB_TITLE LIKE '%manager%' ;
--
-- 10. 各个部门中 最高工资中最低的那个部门的 最低工资是多少
SELECT DEPARTMENT_ID,min(SALARY) FROM employees WHERE DEPARTMENT_ID=
(SELECT DEPARTMENT_ID FROM employees
GROUP BY DEPARTMENT_ID ORDER BY max(SALARY) DESC LIMIT 1);
--
-- 11. 查询平均工资最高的部门的manager 的详细信息: last_name,department_id, email, salary
SELECT last_name,department_id, email, salary FROM employees
LEFT JOIN jobs on employees.JOB_ID=jobs.JOB_ID
WHERE department_id=
(SELECT department_id FROM employees
GROUP BY DEPARTMENT_ID ORDER BY sum(SALARY)/COUNT(SALARY) desc LIMIT 1)
and jobs.JOB_TITLE LIKE "%manager%";
-- 12. 查询1999 年来公司的人所有员工的最高工资的那个员工的信息.
SELECT * FROM employees WHERE SALARY =(SELECT MAX(SALARY) FROM employees AND LEFT(str,len)) AND
-- 13. 返回其它部门中比job_id 为‘IT_PROG’部门所有工资都低的员工的员工号、姓名、job_id 以及salary
SELECT EMPLOYEE_ID,CONCAT(FIRST_NAME,LAST_NAME),job_id,salary FROM employees
WHERE JOB_ID not in
(SELECT DEPARTMENT_ID FROM employees WHERE JOB_ID='IT_PROG')
AND SALARY >
(SELECT min(SALARY) FROM employees WHERE JOB_ID='IT_PROG');
sql05
猜你喜欢
转载自blog.csdn.net/Captain_DUDU/article/details/103467949
今日推荐
周排行