작성
·
234
·
수정됨
0
강의 너무 재밌게 잘듣고 있어서 감사합니다.
두 가지 접근법으로 설명해주셨는데 아래 나열된 4개의 표를 보고 LEFT JOIN으로 처음부터 접근하겠다고 생각을 했다면 맞는 방식인가요?
아니면 선생님처럼 마지막표로 했을 때와 수치가 일치하지 않고 확인하고 접근하는게 맞는 방식일까요?
2. 원래는 항상 AS 알리아스를 사용하셨는데 갑자기
FROM COMPANY C
Lead_Manager LM
이런식으로 AS 생략 후 Capital 사용을 해주셨는데
설명없이 진행된거 같은데 AS를 생략하고 스페이스 후 대문자로 쓰면 AS와 동일하게 입력되는게 맞나요?
GROUP BY가 와야되는 이유
해당 문제의 쿼리문은 작성하였는데 그룹바이를 빠뜨렸습니다. 어떤 이유에서 그룹바이가 와야하는지 이유가 잘 이해되지 않아서 질문드렸습니다.
아래와 같이 쿼리문을 작성하였는데 실행되지 않아서 문의드립니다. ㅜ
SELECT company.company_code
, company.founder
, COUNT(DISTINCT Lead_Manger.lead_manager_code)
, COUNT(DISTINCT Senior_Manager.senior_manager_code)
, COUNT(DISTINCT Manager.manager_code)
, COUNT(DISTINCT Employee.employee_code)
FROM Company
LEFT JOIN Lead_Manager ON Company.company_code = Lead_Manager.company_code
LEFT JOIN Senior_Manager ON Lead_Manager.company_code = Senior_Manager.company_code
LEFT JOIN Manager ON Senior_Manager.company_code = Manager.company_code
LEFT JOIN Employee ON Manager.company_code = Employee.company_code
Group BY company.company_code, company.founder
ORDER BY company.company_code
긴 글 읽어주셔서 감사합니다!
답변 2
1
안녕하세요, 인프런 AI 인턴이에요.
LEFT JOIN으로 처음부터 접근하는 것과 선생님처럼 마지막 표로 접근하는 것 중 어느 것이 맞는 방식인지에 대해서는 여러 가지 접근 방법이 가능합니다. 주어진 문제와 자신의 편의에 따라 선택하실 수 있습니다. 하지만 주의하셔야 할 점은 결과값이 올바르게 나와야 한다는 점입니다.
AS는 필수적으로 사용해야 하는 것은 아닙니다. AS를 사용하여 알리아스를 부여하면 해당 열의 이름이 변경되어 보기 편해질 수 있습니다. 하지만 AS를 생략하고 스페이스 후 대문자로 쓰면 AS와 동일하게 인식됩니다.
GROUP BY는 그룹화된 데이터의 통계를 얻기 위해 사용됩니다. 즉, 원하는 열을 기준으로 데이터를 그룹화하고 그룹에 해당하는 통계를 구하는 작업입니다. 그룹화된 데이터에 대한 통계를 얻으려면 GROUP BY 절을 사용해서 어떤 열을 기준으로 그룹화할 것인지 명시해야 합니다. 따라서 해당 문제에서도 GROUP BY 절을 사용해야 합니다.
아래와 같이 GROUP BY 절을 추가하시면 쿼리문이 실행될 수 있습니다.
SELECT company.company_code
, company.founder
, COUNT(DISTINCT Lead_Manger.lead_manager_code)
, COUNT(DISTINCT Senior_Manager.senior_manager_code)
, COUNT(DISTINCT Manager.manager_code)
, COUNT(DISTINCT Employee.employee_code)
FROM Company
LEFT JOIN Lead_Manager ON Company.company_code = Lead_Manager.company_code
GROUP BY company.company_code, company.founder
더 궁금한 사항이 있으면 언제든지 물어보세요!
0
해당 질문과 연결되는 질문인데요, group by에 왜 company_code와 founder가 모두 와야하는지가 궁금합니다. 그냥 company_code로만 group을 지어주면 안되는 것인가요??
SELECT 절에는 GROUP BY 기준이 되는 컬럼과 집계 함수로 선택된 컬럼만 포함되어야 합니다. 만약 집계되지 않은 컬럼(여기서는 founder)이 SELECT에 포함되었는데, 이 컬럼이 GROUP BY에도 없다면 쿼리가 올바르게 동작하지 않을 수 있습니다.