주어진 테이블 '직원'
employee_id | salary | department_id
-------------+--------+---------------
SQL을 사용하는 경우에만 한 부서에서 다른 부서로의 모든 직원 전송 유형을 찾아 '출발'부서와 '도착'부서의 평균 급여가 증가했습니다.
추신 : 나는 대답을하지 않은 인터뷰에서 질문을 받았으며 Google은 거의 도움이되지 않았습니다.
주어진 테이블 '직원'
employee_id | salary | department_id
-------------+--------+---------------
SQL을 사용하는 경우에만 한 부서에서 다른 부서로의 모든 직원 전송 유형을 찾아 '출발'부서와 '도착'부서의 평균 급여가 증가했습니다.
추신 : 나는 대답을하지 않은 인터뷰에서 질문을 받았으며 Google은 거의 도움이되지 않았습니다.
답변:
따라서 현재 부서의 평균보다 낮지 만 새로운 부서의 평균보다 많은 직원을 찾고 있습니다.
이를 충족시키는 모든 직원 양도를 얻는 한 가지 방법은 다음과 같습니다.
WITH departments
AS (SELECT AVG(salary) AS AvgSalary,
department_id
FROM employees
GROUP BY department_id)
SELECT e.employee_id,
dept_current.department_id AS current_department_id,
dept_new.department_id AS new_department_id
FROM employees e
JOIN departments dept_current
ON e.department_id = dept_current.department_id
AND dept_current.AvgSalary > e.salary
JOIN departments dept_new
ON dept_new.AvgSalary < e.salary
employees
있습니다. 그러면 조건을 충족하는 모든 부서 (이용 가능한 경우)로 옮길 수 있습니다.
이는 것을 감안할 때 면접 질문 (아닌 테스트 질문), 문맥에 따라 몇 가지 가능성이 있습니다.
언급 된대로 질문이 불완전하고 할 수 없다아마도 현재 형식으로 대답해서는 안됩니다 (아래 업데이트 섹션 참조 ). 없어진 물건 있어요? 예를 들어,
이것이 OLTP 테이블에 더 많은 경우 employee_id
필드 에 PK / 고유 인덱스 / 고유 제한 조건이 정의되어 있어야 합니다. 그리고이 경우, 한 번에 하나의 항목 만 존재 employee_id
하므로 이전을 결정할 방법이 없습니다 (즉, "오래된" department_id
레코드 가 없음 ).
이 테이블이 OLAP 테이블 인 경우 느리게 변경되는 차원 일 수 있으며이 경우 여러 employee_id
레코드 가 있습니다 . 그러나 출발 및 도착 부서가 올바른 순서로 결정될 수 있도록 ValidFrom
및 ValidTo
DATE / DATETIME 필드도 있어야합니다 . 이 필드없이 어느 부서 확인할 방법이 없습니다 출발 어느 하나가입니다 도착 . 그리고 구별을 알지 못하면 요청과 반대되는 레코드를 다시 가져올 수 있습니다.
따라서이 질문을 해석하는 방법에 대한 "컨텍스트"는 질문이 그대로 언급 된 이유입니다.
인터뷰와 여기에서 묻는 것 사이에 세부 사항을 잊었습니다.
이러한 경우가 발생하지만 누락 된 정보를 채우려면 질문을 업데이트해야합니다. 그렇지 않으면 (적어도 의미있는 답변을 얻는 관점에서) 응답 할 수없는 상태로 유지됩니다.
이 질문은 여기에 정확하게 쓰여졌으며, 이러한 문제는 면담 자에게 알려 지거나 의도 되지 않았습니다 .
이 경우, 이러한 문제를 알고 있고 답변을 기대하고 있다면 가능한 고용주로서이를 제거하는 수단으로 사용할 수 있습니다. ;-).
이 질문은 여기에 정확하게 쓰여 졌으며 , 이러한 문제 는 면담 자 에게 알려 지거나 의도 된 것입니다.
이 경우, 그들은 아마도 원시 기술 능력 이상의 것을 살펴봄으로써 사람들을 제거하는 수단으로 이것을 사용했을 것입니다. 그것은 종종로 질문을하는 것이 중요합니다 매우 생각하지 않는다 등 대부분의 최종 사용자와 제품 소유자 이후에 작업중인 프로젝트에 대한 명확한 / 낮은 수준의 기술적 인 세부 사항에 말을 자주 필요한 조각을 떠날 것입니다. 잘못된 방향으로 작업하는 데 시간을 낭비하지 않도록 설명을 얻기 위해 요청의 소스로 돌아가는 것이 아니라 가정하는 것이 중요합니다.
단순히 진공 상태에서 기술적 질문에 대답 할 수있는 입장에 대해 면담하고 있지는 않습니다. 프로젝트에서 일할 자리에 대해 면담 중이며 요청한 내용에 대해 모호함 및 / 또는 오도 정보가 항상있을 것입니다. 좋은 면접관은 실력 과 실제 생산성에 대한 이해를 얻으려고 노력할 것입니다. 나는 기술적 인 질문에 잘 대답하지만 너무 많은 손을 잡아야하고 팀 속도를 늦추는 사람들을 제거하기 위해 사람들을 인터뷰 할 때 이와 같은 질문을했습니다.
최신 정보:
@Martin이 그의 답변에서 한 것처럼 해석되는 간단한 쿼리 기술 질문이라고 생각하는 사람들의 설명을 명확히하기 위해 : OP에 제시 된 질문의 정확한 표현인지조차 알지 못합니다. 우리는 상황을 믿을 수있는 한, 이것이 인터뷰에서 제공되었다는 것을 알고 있습니다. 그리고 좋은면접관은 후보 기술 능력뿐만 아니라 비 기술적 / "부드러운"기술을 끌어낼 수 있는지 질문합니다. 마틴이 미래의 이적 조합에 대해 질문하고 있다는 해석이 정확할 수도있다 (즉, "시가는 단순히 시가"). 그리고 이것이 시험 문제라면, 그의 대답이 정확하지 않으면 놀랄 것입니다. 그러나 이것은 테스트 질문이 아닙니다. 물론, 후보자가 어떤 유형의 사람인지, 그리고 그러한 모호함이 대부분의 사람들이 알아 채는 것보다 더 자주 나타나는 디자인 회의에서 어떻게 수행 할 것인지를 보려고하지 않는 사람이 묻는 질문 일 수 있습니다. 그러나 아무런 대답도 없었습니다.작업을 수행합니다 ( '검색 인을 찾고 있습니다'페이지에서 검색하지만 실제로 전체 내용을 읽어야 함). 그래서 모든면에서 평등하지만 한 사람은 해석을 가정하고 올바른 두 후보 사이에서, 다른 사람은 질문을하고 정답을 얻었습니다.