Recent Posts
다은하게
[프로그래머스 SQL/DB 스터디 1기 5주차] 후기&TIL 본문
5주차 : 2021.12.05 ~ 2021.12.11
전체적인 5주차 스터디 후기
CH9. 서브쿼리와 CH10. 무결성 유지 메커니즘, 뷰와 데이터 사전에 대해 온라인 강의를 시청했다. 뷰와 데이터 사전은 약간 생소한 개념들이 였기에 두번 시청하면서 학습했다. 실시간 세션을 통해서도 해당 개념을 한번 더 체크해보는 시간을 가졌다.
초반에는 너무 쉽다고 안일했는데, 주차가 거듭될수록 필요한 역량을 제대로 익힐 수 있어 좋았다.
1. 연관 서브쿼리
🙄 문제
주문을 하지 않은 고객의 담당 직원(salesRepId)을 검색하세요.
출력 컬럼은 직원의 성명, jobTitle 순으로 합니다.
결과는 성명의 오름차순으로 정렬합니다.
⛔ 나의 코드
SELECT CONCAT(firstName, ' ', lastName) 성명, jobTitle
FROM employees
WHERE employeeId = ANY (
SELECT salesRepId
FROM customers C
WHERE NOT EXISTS (
SELECT *
FROM orders O
WHERE C.customerId = O.customerId
)
)
GROUP BY 1;
-- 정답은 맞았으나, 불필요한 코드 작성
✅ 피드벡
SELECT CONCAT(firstName, ' ', lastName) 성명, jobTitle
FROM employees
WHERE employeeId IN ( /* 주문하지 않은 고객의 담당 직원 */
SELECT salesRepId
FROM customers C LEFT JOIN orders O ON C.customerId = O.customerId
WHERE O.customerId IS NULL
) -- 필요한 데이터만을 가진 쿼리문 작성
ORDER BY 1;
2. WHERE 절 이외의 서브쿼리
🙄 문제
지점(offices.city) 별로, 고객이 있는 국가(customers.country) 별 고객수의 평균을 구하여,
국가별 고객수와 함께 출력하세요.
출력 컬럼은 city, country, 고객수, 고객수평균 순으로 합니다.
결과는 city의 오름차순, country의 오름차순으로 정렬합니다.
⛔ 나의 코드
WITH temp AS
(
SELECT O.city, C.country, C.customerId
FROM customers C JOIN employees E ON C.salesRepId = E.employeeId
JOIN offices O USING (officeCode)
)
SELECT city, country, COUNT(customerId) 고객수
FROM temp
GROUP BY city, country
ORDER BY 1, 2;
-- 틀림.
-- city 별, country 별로 제대로 GROUP BY 되지 않음.
✅ 피드벡
WITH temp AS
(
SELECT O.city, C.country, COUNT(*) 고객수 /* 지점-국가별 고객수, 컬럼 별칭 */
FROM offices O JOIN employees E USING (officeCode)
JOIN customers C ON E.employeeId = C.salesRepId
GROUP BY O.city, C.country
)
SELECT city, country, 고객수,
(
SELECT AVG(고객수) /* 컬럼명 */
FROM temp Y
WHERE Y.city = X.city
) 고객수평균
FROM temp X
ORDER BY city, country;
프로그래머스 스쿨 [스터디/1기] 학교 밖에서 듣는 전공필수 SQL/DB Essential 바로가기
'프로그래머스 스쿨 > SQLxDB 스터디 1기' 카테고리의 다른 글
[프로그래머스 SQL/DB 스터디 1기 ] 최종 SQL 코딩테스트 (0) | 2022.01.09 |
---|---|
[프로그래머스 SQL/DB 스터디 1기 6주차] 후기&TIL (0) | 2022.01.09 |
[프로그래머스 SQL/DB 스터디 1기 4주차] 후기&TIL (0) | 2021.12.04 |
[프로그래머스 SQL/DB 스터디 1기 3주차] TIL (0) | 2021.11.27 |
[프로그래머스 SQL/DB 스터디 1기 3주차] 후기 (0) | 2021.11.27 |
Comments