- [MySQL] 1일 1쿼리 (2) : JOIN 활용하기2024년 06월 05일
- Song hyun
- 작성자
- 2024.06.05.:26
728x90반응형[MySQL] 1일 1쿼리 (2) : JOIN 활용하기
1. 문제
2. 풀이
1. 문제
순서 문제 1 전직원 2000년도의 연봉을 출력하세요(출력 예시 : id , firstname, lastname,slalary) 2 'd004' 부서의 남자직원의 이름을 출력하세요 (출력예시 : firstname , M , 'd004' ) 3 아직 재직중인 사람의 이름과 성 직급 입사일자를 출력해 보자. 4 부서 매니저들의 평균 연봉을 추출해 보자. 5 각 직원의 정보를 확인하기 (직원번호, 생년월일, 이름, 성,부서번호, 부서명, 직업명) 6 1990년 이상 입사자 이름과 급여 부서 직책 7 전직원 2000년도의 연봉을 출력하세요(출력 예시 : id , firstname, lastname,slalary) 8 'd004' 부서의 남자직원의 이름을 출력하세요 (출력예시 : firstname , M , 'd004' ) 9 부서 매니저의 연봉이 100,000 달러 이상인 사람 확인하시오 (출력예시 : 사원번호,입사날짜,연봉) 10 8월 15일에 고용한 직원들에게 태극기를 지급하기로 했다.
사원 번호, 고용 날짜와 last_name을 조회하시오11 현재 근무중인 매니저들의 사번, 이름, 성별, 생년월일, 최근 급여를 나타내세요 12 1965년생 중 현재 영업팀에서 일하고, 최근 급여가 55000 이하인 사람의
사번, 생년월일, 이름, 성별, 고용일, 최근 급여를 나타내세요13 퇴사한 기술부서 전체 인원을 출력해주세요 14 현재 재직중인 사람중 입사일이 1991-10-10 인 사람의 부서를찾아주세요 15 아직까지 일하고있는 사람중에 남자가 몇명인지 알아보자. 16 시니어 엔지니어의 월급중 6만달러가 넘는 사람이 몇명인지 알아보자 17 마케팅 부서에 속하는 사람 중 퇴사한 사람들의 명단을 만들어 보자. 18 전체 노동자의 사원 번호와 이름,연봉을 나타내주세요.
2. 풀이
2024.06.07 1. -- 전직원 2000년도의 연봉을 출력하세요(출력 예시 : id , firstname, lastname,slalary) select e.emp_no, e.first_name, e.last_name , s.salary from employees as e join salaries as s on e.emp_no = s.emp_no where s.from_date like '2000%'; 2. -- 'd004' 부서의 남자직원의 이름을 출력하세요 (출력예시 : firstname , M , 'd004' ) select e.first_name , e.gender , d.dept_no from employees as e join dept_emp as d on e.emp_no = d.emp_no where e.gender = 'M' and d.dept_no = 'd004' ; 3. -- 아직 재직중인 사람의 이름과 성 직급 입사일자를 출력해 보자. select em.first_name,em.last_name, tt.title, em.hire_date from employees as em join titles as tt on em.emp_no = tt.emp_no where tt.to_date = '9999-01-01'; 4. -- 부서 매니저들의 평균 연봉을 추출해 보자. select avg(sa.salary) from dept_manager as dm join salaries as sa on dm.emp_no = sa.emp_no; 5. 각 직원의 정보를 확인하기 (직원번호, 생년월일, 이름, 성,부서번호, 부서명, 직업명) select e.emp_no, -- 직원 번호 e.birth_date, -- 생년월일 e.first_name, -- 성 e.last_name, -- 이름 e.gender, -- 성별 d.dept_no, -- 부서 번호 dp.dept_name, -- 부서 이름 t.title from employees as e -- employees 참고 right join dept_emp as d -- dept_emp department에 대한 직원 번호 on e.emp_no = d.emp_no -- employees 의 직원번호 == d_emp 의 직원번호 right join departments as dp -- 부서 이름 정보 on d.dept_no = dp.dept_no right join titles as t on e.emp_no = t.emp_no; 6. 1990년 이상 입사자 이름과 급여 부서 직책 select concat( e.last_name,' ',e.first_name) as '이름', e.hire_date as '입사날짜' ,s.salary as '급여', d.dept_no as '개발부서', t.title as '직책' from employees as e left join salaries as s on e.emp_no = s.emp_no left join dept_emp as d on e.emp_no = d.emp_no left join titles as t on e.emp_no = t.emp_no where e.hire_date >= '1990-01-01' and d.dept_no = 'd005'; 7. -- 전직원 2000년도의 연봉을 출력하세요(출력 예시 : id , firstname, lastname,slalary) select e.emp_no, e.first_name, e.last_name , s.salary from employees as e join salaries as s on e.emp_no = s.emp_no where s.from_date like '2000%'; 8. -- 'd004' 부서의 남자직원의 이름을 출력하세요 (출력예시 : firstname , M , 'd004' ) select e.first_name , e.gender , d.dept_no from employees as e join dept_emp as d on e.emp_no = d.emp_no where e.gender = 'M' and d.dept_no = 'd004' ; 9. 부서 매니저의 연봉이 100,000 달러 이상인 사람 확인하시오 (출력예시 : 사원번호,입사날짜,연봉) select d.emp_no, d.from_date, s.salary from dept_manager as d join salaries as s on d.emp_no = s.emp_no where s.salary > 100000; 10. 8월 15일에 고용한 직원들에게 태극기를 지급하기로 했다. 사원 번호, 고용 날짜와 last_name을 조회하시오 select e.emp_no, d.from_date, e.last_name from employees as e left join dept_emp as ddept_empdepartmentsdepartmentsdept_empdept_emp on e.emp_no = d.emp_no where d.from_date like '%-08-15'; ---------------------------------------- 11. 현재 근무중인 매니저들의 사번, 이름, 성별, 생년월일, 최근 급여를 나타내세요 select e.emp_no, e.first_name, e.last_name, e.gender, e.birth_date, s.salary from employees as e left join dept_manager as m on e.emp_no = m.emp_no left join salaries as s on e.emp_no = s.emp_no where m.to_date = '9999-01-01' and s.to_date = '9999-01-01'; 12. 1965년생 중 현재 영업팀에서 일하고, 최근 급여가 55000 이하인 사람의 사번, 생년월일, 이름, 성별, 고용일, 최근 급여를 나타내세요 select e.emp_no, e.birth_date, e.first_name, e.last_name, e.gender, e.hire_date, s.salary from employees as e left join dept_emp as d on e.emp_no = d.emp_no left join salaries as s on e.emp_no = s.emp_no where e.birth_date like '1965%' and d.dept_no = 'd007' and s.salary < 55000 and s.to_date = '9999-01-01' 13. 퇴사한 기술부서 전체 인원을 출력해주세요 select e.dept_no,e.from_date,e.to_date from dept_emp as e left join departments as d on e.dept_no =d.dept_no where e.dept_no = 'd005' and e.to_date != '9999-01-01'; 14. 현재 재직중인 사람중 입사일이 1991-10-10 인 사람의 부서를찾아주세요 select e.dept_no,e.from_date,e.to_date from dept_emp as e left join departments as d on e.dept_no =d.dept_no where e.from_date = '1991-10-10' and e.to_date = '9999-01-01' ; 15. 아직까지 일하고있는 사람중에 남자가 몇명인지 알아보자 select e.gender,t.to_date from titles as t join employees as e on t.emp_no = e.emp_no where t.to_date ='9999-01-01' and e.gender = 'M'; 16. 시니어 엔지니어의 월급중 6만달러가 넘는 사람이 몇명인지 알아보자 select t.title,s.salary from titles as t join salaries as s on t.emp_no = s.emp_no where t.title ='Senior Engineer' and s.salary > 60000; 17. 마케팅 부서에 속하는 사람 중 퇴사한 사람들의 명단을 만들어 보자. select * from dept_emp as d left join departments as p on d.dept_no=p.dept_no where d.dept_no='d001' and d.to_date!='9999-01-01'; 18. 전체 노동자의 사원 번호와 이름,연봉을 나타내주세요. select* from employees as e left join salaries as s on e.emp_no=s.emp_no;
3. 내가 푼 것
use employees; select*from salaries; select*from employees; select*from dept_emp; select*from departments; select*from titles; select*from dept_manager; -- 문제 1.전직원 2000년도의 연봉을 출력하세요 select e.emp_no,e.first_name,e.last_name,s.salary from employees as e join salaries as s on e.emp_no=s.emp_no where s.from_date like '2000%'; -- 문제 2. 'd004' 부서의 남자직원의 이름을 출력하세요 select e.first_name from employees as e join dept_emp as d on e.emp_no=d.emp_no where d.dept_no='d004'; -- 문제 3. 아직 재직중인 사람의 이름과 성 직급 입사일자를 출력해 보자. select e.first_name, e.last_name, t.title, e.hire_date from employees as e join titles as t on e.emp_no=t.emp_no where t.to_date='9999-01-01'; -- 문제 4. 부서 매니저들의 평균 연봉을 추출해보자. select AVG(s.salary) from dept_manager as m join salaries as s on m.emp_no=s.emp_no; -- 문제 5. 각 직원들의 정보를 확인하기 select* from employees as e left join dept_emp as de on e.emp_no=de.emp_no left join departments as d on de.dept_no=d.dept_no; -- 문제 6. 1990년 이상 입사자 이름과 급여 부서 직책 select e.first_name,s.salary,d.dept_no,t.title from employees as e left join salaries as s on e.emp_no=s.emp_no left join titles as t on e.emp_no=t.emp_no left join dept_emp as d on e.emp_no=d.emp_no where t.from_date>'1990-01-01'; -- 문제 7. 전 직원 2000년도 연봉을 출력해보자. select e.first_name, s.salary from employees as e left join salaries as s on e.emp_no=s.emp_no where s.from_date>'2000-01-01' and s.from_date<'2001-01-01'; -- 문제 8. 'd004' 부서의 남자직원의 이름을 출력하세요 select e.first_name,e.gender,d.dept_no from employees as e left join dept_emp as d on e.emp_no=d.emp_no where e.gender='M'; -- 문제 9. 부서 매니저의 연봉이 100,000 달러 이상인 사람 확인하시오 (출력예시 : 사원번호,입사날짜,연봉) select dm.emp_no,dm.from_date,s.salary from dept_manager as dm left join salaries as s on dm.emp_no=s.emp_no where s.salary>100000; -- 문제 10. 8월 15일에 고용한 직원들의 사원 번호, 고용 날짜와 last_name을 조회하시오 select e.emp_no,e.hire_date,e.last_name from employees as e where e.hire_date like '%-08-15';
728x90반응형'MySQL > 1일 1쿼리' 카테고리의 다른 글
[MySQL] 1일 1쿼리 (6) : 서브 쿼리 및 기본 개념 활용 (0) 2024.06.12 [MySQL] 1일 1쿼리 (5) : Self join 및 기존 개념 복습 (0) 2024.06.11 [MySQL] 1일 1쿼리 (4): HAVING과 GROUP BY 절 (0) 2024.06.11 [MySQL] 1일 1쿼리 (3) : 함수 응용하기 (0) 2024.06.07 [MySQL] 1일 1쿼리 (1) : 영화 평점표 만들기 (0) 2024.06.04 다음글이전글이전 글이 없습니다.댓글
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)