• 티스토리 홈
  • 프로필사진
    Song hyun
  • 방명록
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
Song hyun
  • 프로필사진
    Song hyun
    • 분류 전체보기 (780)
      • 백준 (0)
      • 일본어 (0)
        • 모모타로TMC (0)
      • 영어 (2)
        • Diary (0)
        • Toast Masters (2)
      • 메모 (13)
      • 설치 메뉴얼 (30)
      • Java (178)
      • MySQL (60)
      • JSP (67)
      • Springboot (46)
      • HTML,CSS, JS (71)
        • HTML (8)
        • CSS (12)
        • JavaScript (37)
        • HTML&CSS 스터디 (13)
      • C++ (7)
      • Linux (7)
      • JPA (34)
      • Kotlin (2)
      • Flutter (42)
      • Error Note (39)
      • 디자인 패턴 (12)
      • 디지털논리회로 (4)
      • 데이터베이스 시스템 (8)
      • 알고리즘 (7)
      • 운영체제 (3)
      • 이산수학 (3)
      • 인공지능 (1)
      • 자료 구조 (14)
        • 기본 개념 (14)
        • 자료구조 스터디 (0)
      • 💡My project (76)
        • 팩맨 : Java Swing 게임 제작 프로젝트 (6)
        • 네이트톡 : Java 소켓 통신 프로젝트 (4)
        • 포켓옥션 : HikariCP&JDBC CRUD 프.. (3)
        • 이지 부산 : BDIA-Devton 2024 프로.. (20)
        • 그린 유니버시티 : JSP를 사용한 학사관리 프로.. (1)
        • 애드 포커 : 웹 소켓과 Spring을 사용한 카.. (1)
        • 셸위 : 게임 친구 매칭 사이트 (21)
        • 다모아 : 개발자 중개 플랫폼 (20)
      • 📗스터디 (13)
        • CNN : 웹개발 스터디 (10)
        • Node&React로 유튜브 사이트 만들기 (3)
      • 📙독서 및 강연 기록 (36)
        • 강연 (14)
        • 독서 (22)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    • 최근 공지
        등록된 공지가 없습니다.
      # Home
      # 공지사항
      #
      # 태그
      # 검색결과
      # 방명록
      • [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' 카테고리의 다른 글

        [MySQL] 24. 예제 코드: Function, decimal 이해하기  (0) 2024.06.07
        [MySQL] 23. SQL Function  (0) 2024.06.07
        [MySQL] 22. 테이블 복사 및 데이터 추가  (0) 2024.06.05
        [MySQL] 21. OUTER JOIN  (0) 2024.06.05
        [MySQL] 20. JOIN  (0) 2024.06.05
        다음글
        다음 글이 없습니다.
        이전글
        이전 글이 없습니다.
        댓글
      조회된 결과가 없습니다.
      스킨 업데이트 안내
      현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
      ("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
      목차
      표시할 목차가 없습니다.
        • 안녕하세요
        • 감사해요
        • 잘있어요

        티스토리툴바