【SQL 테스트 능력 문제】 현재 부서 소속 직원 일람표를 작성한 SQL

6388 단어 SQL

입문


흔한 패턴이니까 아시는 분들은 아시겠지만 처음 보는 사람은'...'에 대한 SQL 질문입니다.
SQL 퀴즈로 퀴즈를 내도록 하겠습니다, 여러분은 앞다투어 정답을 생각해 주세요!!

요구 사항

  • 에는 직원과 소속 이력서 두 가지 모델이 있다.
  • 직원은 한 부 이상의 소속 이력서를 가지고 있다.
  • 해당 직원이 지금까지 소속된 부서의 이력서를 소속 이력서에 보관한다.
  • 소속 이력서에 시작일을 설정했다.
  • 소속 이력서가 여러 개 있는 상황에서 시작일은 최신 이력서로 현재 부서를 표시한다.
  • 현재 IT 부서에 속한 직원 목록을 얻는 방법
  • 예제


    직원표


    id
    name

    John

    Mary

    Tom

    소속 히스토리 테이블


    id
    employee_id
    start_date
    section_name}


    2013/01/01
    Sales


    2013/01/01
    IT


    2013/01/01
    IT


    2014/01/01
    IT


    2014/01/01
    Sales
    지원
  • John(employee_id:1)의 현재 부서는 IT
  • Mary(employee_id:2)의 현재 부서는 Sales
  • Tom(employee_id:3)의 현재 부서는 IT
  • 예상 출력 결과


    employee_id
    name
    section_name
    start_date

    John
    IT
    2014/01/01

    Tom
    IT
    2013/01/01
    지원
  • 순서는 employee_id
  • 제한 등

  • RDBMS를 PostgreSQL9.2.4로 추천하지만 그 외의 RDBMS도 가능합니다.
  • 스키마 생성을 위한 SQL

    CREATE TABLE employees (
      id integer PRIMARY KEY
      ,name varchar(50)
    );
    
    INSERT INTO employees VALUES (1,'John');
    INSERT INTO employees VALUES (2,'Mary');
    INSERT INTO employees VALUES (3,'Tom');
    
    CREATE TABLE section_histories (
      id integer PRIMARY KEY
      ,employee_id integer
      ,start_date date
      ,section_name varchar(50)
    );
    
    INSERT INTO section_histories VALUES (1,1,'2013/01/01', 'Sales');
    INSERT INTO section_histories VALUES (2,2,'2013/01/01', 'IT');
    INSERT INTO section_histories VALUES (3,3,'2013/01/01', 'IT');
    INSERT INTO section_histories VALUES (4,1,'2014/01/01', 'IT');
    INSERT INTO section_histories VALUES (5,2,'2014/01/01', 'Sales');
    

    해답 방법

  • 집행 방법은 자유롭지만 사용SQL Fiddle은 간단할 수 있다.
  • SQL이 완료되면 gist 또는 SQL Fiddle의 URL을 이 글의 설명에 붙여넣으십시오.방법을 강구할 곳과 호소점이 있다면 자유롭게 하세요.

  • 기타

  • 우승자에게는 좋은 상품이 없다.순위 계획도 없어요.각자 자기 만족의 세계에서 SQL을 만들어 보세요.
  • 변주곡으로 흔히 볼 수 있는 것은 소속 이력서에 시작 날짜와 종료 날짜가 있고 미래의 이동 예정도 미리 입력할 수 있는 패턴이 있다.이쪽의 SQL을 생각해 보면 많은 것을 배울 수 있을 거예요.
  • 나의 해답 예


    나는 이런 느낌으로 해 보았다.
    나는 이런 대답이 비교적 표준적이라고 생각한다. 어때?
    아, 자신의 힘으로 답을 생각하고 싶은 사람은 보지 마세요!!
  • http://sqlfiddle.com/#!12/ae7cf/2
  • SQL Fiddle 상태가 좋지 않을 경우 여기 gist. 를 사용합니다.
  • 마지막


    그럼 여러분, Let's try!!

    과거에 했던 SQL 테스트 문제.

  • [SQL 퀴즈!]마감일이 임박한 이벤트 요약 양식을 작성한 SQL
  • 좋은 웹페이지 즐겨찾기