다은하게

[프로그래머스 SQL/DB 스터디 1기 5주차] 후기&TIL 본문

프로그래머스 스쿨/SQLxDB 스터디 1기

[프로그래머스 SQL/DB 스터디 1기 5주차] 후기&TIL

DaaEun 2022. 1. 9. 00:19

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 바로가기

 

[스터디/1기] 학교 밖에서 듣는 전공필수 SQL/DB Essentials

🚀 아쉽지만 1기는 마감되었어요. 2기 오픈 알림 신청하고, 최저가에 수강하세요! 최저가 알림 받기 개발자에게 데이터 베이스를 이해하는 능력은 필수! 데이터 베이스의 기본 개념부터 ERD를 읽

programmers.co.kr

 

Comments