인터뷰 SQL 질문


19

주어진 테이블 '직원'

 employee_id | salary | department_id 
-------------+--------+---------------

SQL을 사용하는 경우에만 한 부서에서 다른 부서로의 모든 직원 전송 유형을 찾아 '출발'부서와 '도착'부서의 평균 급여가 증가했습니다.

추신 : 나는 대답을하지 않은 인터뷰에서 질문을 받았으며 Google은 거의 도움이되지 않았습니다.


5
나는 그들이 기대했던 답이 "소문자 테이블과 열 이름, 왜 낙타 케이싱보다 밑줄을
긋는 지

@MikeyMouse : 왜 안돼? 낙타의 경우는 SQL에서 쓰기 테이블 이름을 선호하는 방법 (적어도 내가 어디에서 온)입니다
a_horse_with_no_name

답변:


22

따라서 현재 부서의 평균보다 낮지 만 새로운 부서의 평균보다 많은 직원을 찾고 있습니다.

이를 충족시키는 모든 직원 양도를 얻는 한 가지 방법은 다음과 같습니다.

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 

어느 부서가 "새 부서"이고 어떤 부서가 "오래된"부서인지 어떻게 알 수 있습니까?
mustaccio

1
@mustaccio-현재 소속 된 부서가 테이블에 employees있습니다. 그러면 조건을 충족하는 모든 부서 (이용 가능한 경우)로 옮길 수 있습니다.
Martin Smith

10

이는 것을 감안할 때 면접 질문 (아닌 테스트 질문), 문맥에 따라 몇 가지 가능성이 있습니다.

언급 된대로 질문이 불완전하고 할 수 없다아마도 현재 형식으로 대답해서는 안됩니다 (아래 업데이트 섹션 참조 ). 없어진 물건 있어요? 예를 들어,

  • 과거 이전 또는 잠재적 미래 이전에 대해 질문 하는가? 표현에는 모호함이 있습니다.
  • 이 표에 다른 필드가 있습니까? 아니면 모두입니까? 그렇다면 무엇입니까?
  • 이 테이블에 정의 된 제약 조건이나 인덱스가 있습니까? 나머지 스키마는 어디에 있습니까?
  • 이것이 OLTP 시스템입니까 아니면 OLAP입니까?

이것이 OLTP 테이블에 더 많은 경우 employee_id필드 에 PK / 고유 인덱스 / 고유 제한 조건이 정의되어 있어야 합니다. 그리고이 경우, 한 번에 하나의 항목 만 존재 employee_id하므로 이전을 결정할 방법이 없습니다 (즉, "오래된" department_id레코드 가 없음 ).

이 테이블이 OLAP 테이블 인 경우 느리게 변경되는 차원 일 수 있으며이 경우 여러 employee_id레코드 가 있습니다 . 그러나 출발도착 부서가 올바른 순서로 결정될 수 있도록 ValidFromValidToDATE / DATETIME 필드도 있어야합니다 . 이 필드없이 어느 부서 확인할 방법이 없습니다 출발 어느 하나가입니다 도착 . 그리고 구별을 알지 못하면 요청과 반대되는 레코드를 다시 가져올 수 있습니다.

따라서이 질문을 해석하는 방법에 대한 "컨텍스트"는 질문이 그대로 언급 된 이유입니다.

  • 인터뷰와 여기에서 묻는 것 사이에 세부 사항을 잊었습니다.

    이러한 경우가 발생하지만 누락 된 정보를 채우려면 질문을 업데이트해야합니다. 그렇지 않으면 (적어도 의미있는 답변을 얻는 관점에서) 응답 할 수없는 상태로 유지됩니다.

  • 이 질문은 여기에 정확하게 쓰여졌으며, 이러한 문제는 면담 자에게 알려 지거나 의도 되지 않았습니다 .

    이 경우, 이러한 문제를 알고 있고 답변을 기대하고 있다면 가능한 고용주로서이를 제거하는 수단으로 사용할 수 있습니다. ;-).

  • 이 질문은 여기에 정확하게 쓰여 졌으며 , 이러한 문제 면담 자 에게 알려 지거나 의도 된 것입니다.

    이 경우, 그들은 아마도 원시 기술 능력 이상의 것을 살펴봄으로써 사람들을 제거하는 수단으로 이것을 사용했을 것입니다. 그것은 종종로 질문을하는 것이 중요합니다 매우 생각하지 않는다 등 대부분의 최종 사용자와 제품 소유자 이후에 작업중인 프로젝트에 대한 명확한 / 낮은 수준의 기술적 인 세부 사항에 말을 자주 필요한 조각을 떠날 것입니다. 잘못된 방향으로 작업하는 데 시간을 낭비하지 않도록 설명을 얻기 위해 요청의 소스로 돌아가는 것이 아니라 가정하는 것이 중요합니다.

    단순히 진공 상태에서 기술적 질문에 대답 할 수있는 입장에 대해 면담하고 있지는 않습니다. 프로젝트에서 일할 자리에 대해 면담 중이며 요청한 내용에 대해 모호함 및 / 또는 오도 정보가 항상있을 것입니다. 좋은 면접관은 실력 실제 생산성에 대한 이해를 얻으려고 노력할 것입니다. 나는 기술적 인 질문에 잘 대답하지만 너무 많은 손을 잡아야하고 팀 속도를 늦추는 사람들을 제거하기 위해 사람들을 인터뷰 할 때 이와 같은 질문을했습니다.


최신 정보:

@Martin이 그의 답변에서 한 것처럼 해석되는 간단한 쿼리 기술 질문이라고 생각하는 사람들의 설명을 명확히하기 위해 : OP에 제시 된 질문의 정확한 표현인지조차 알지 못합니다. 우리는 상황을 믿을 수있는 한, 이것이 인터뷰에서 제공되었다는 것을 알고 있습니다. 그리고 좋은면접관은 후보 기술 능력뿐만 아니라 비 기술적 / "부드러운"기술을 끌어낼 수 있는지 질문합니다. 마틴이 미래의 이적 조합에 대해 질문하고 있다는 해석이 정확할 수도있다 (즉, "시가는 단순히 시가"). 그리고 이것이 시험 문제라면, 그의 대답이 정확하지 않으면 놀랄 것입니다. 그러나 이것은 테스트 질문이 아닙니다. 물론, 후보자가 어떤 유형의 사람인지, 그리고 그러한 모호함이 대부분의 사람들이 알아 채는 것보다 더 자주 나타나는 디자인 회의에서 어떻게 수행 할 것인지를 보려고하지 않는 사람이 묻는 질문 일 수 있습니다. 그러나 아무런 대답도 없었습니다.작업을 수행합니다 ( '검색 인을 찾고 있습니다'페이지에서 검색하지만 실제로 전체 내용을 읽어야 함). 그래서 모든면에서 평등하지만 한 사람은 해석을 가정하고 올바른 두 후보 사이에서, 다른 사람은 질문을하고 정답을 얻었습니다.


6
"모든 변형"은 역사적 이전이 아닌 가상의 이전에 대해 이야기하고있는 것 같습니다. 그리고 주어진 정보로 질문에 완벽하게 대답 할 수 있습니다.
Martin Smith

7
나는 마틴과 함께 있습니다. 질문은 분명하고 충분한 정보가 질문에 대답합니다.
paparazzo

3
@MartinSmith 나는 당신의 해석이 타당하지 않거나 가장 가능성이 높다고 말하지 않습니다. 나는 그것이 유일한 것이 아니라고 말하고 있습니다. 종종 무언가의 문구가 "보여지는"것처럼 보이지만 여전히 잘못된 경우가 종종 있습니다. ;-) 처음에 말했듯이, 내 대답은 시험 문제가 아니라 면접 문제라는 점에서 비롯됩니다. 그리고 나는 종종 있었다 "명확하게"진술 한 일을하도록 요청하고, 아직 완전히이었다 한 없는 사람이 정말 원하지만, 그들은 모두가 용어에 합의 가정 때문에 잘못된 것을 요구되었다는 것을 인식하지 무엇인지.
Solomon Rutzky

2
감사합니다. 내 관심사가 모호함에 관한 것이라는 점을 감안할 때, 귀하의 의견에 대한 모호한 모호성에 감사드립니다 :).
Solomon Rutzky

2
@ srutzky 나는 당신과 함께있는 유일한 사람이라고 생각합니다 :) 믹스에 답변을 추가해 주셔서 감사합니다. 수백 번의 인터뷰를 한 사람으로서, 이것은 내가 찾고자하는 사려 깊은 반응의 유형입니다. 아마이 질문을하지 않을 것입니다. 그렇다면 이상적인 후보는 비슷하게 응답 할 것이고, 명확하게 한 후에 Martin과 같은 쿼리를 작성할 것입니다. 이 의견을 읽을 때 가장 중요한 것은 사람들이 다른 방식으로 사물을보고 다른 가정을한다는 것입니다. 따라서, 특히 면접 상황에서 항상 가정을 명확히하고 확인하십시오!
Geoff Patterson
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.