Algorithm & Data Structures/Programers
SQL - 20250512
Geisha
2025. 5. 12. 22:23

🍦 과일로 만든 아이스크림 고르기 – 쿼리 분석
SELECT FLAVOR
FROM ICECREAM_INFO
WHERE INGREDIENT_TYPE = 'fruit_based' AND
FLAVOR IN (
SELECT FLAVOR
FROM FIRST_HALF
WHERE TOTAL_ORDER >= 3000
);
✅ INGREDIENT_TYPE = ‘fruit_based’
- 과일 기반 아이스크림만 필터링
✅ FLAVOR IN (서브쿼리)
SELECT FLAVOR
FROM FIRST_HALF
WHERE TOTAL_ORDER >= 3000
- 상반기(FIRST_HALF) 기준
- 총 주문 수 3000 이상인 인기 아이스크림 추출
- 메인 쿼리의 FLAVOR와 일치하는 경우만 포함
🎣 물고기 종류별 잡은 수 구하기 – 쿼리 분석
SELECT COUNT(*) AS FISH_COUNT, FN.FISH_NAME
FROM FISH_INFO FI
LEFT JOIN FISH_NAME_INFO FN ON FI.FISH_TYPE = FN.FISH_TYPE
GROUP BY FN.FISH_NAME
ORDER BY FISH_COUNT DESC;
✅ LEFT JOIN … ON
LEFT JOIN FISH_NAME_INFO FN ON FI.FISH_TYPE = FN.FISH_TYPE
- FISH_INFO에 있는 잡힌 물고기 정보에 대해
- 물고기 이름(FISH_NAME)이 있는 경우 연결
- FISH_NAME_INFO에 없는 타입도 포함시킴 (LEFT JOIN)
✅ COUNT(*)
- 연결된 결과에서 물고기 이름별 개수 세기
✅ GROUP BY FN.FISH_NAME
- 물고기 이름을 기준으로 묶어서 개수 집계
🐋 가장 큰 물고기의 길이 구하기 – 쿼리 분석
SELECT CONCAT(MAX(LENGTH), 'cm') AS MAX_LENGTH
FROM FISH_INFO;
✅ MAX(LENGTH)
- 전체 물고기 중 최대 길이 계산
- 정렬 없이 집계만 수행 → 성능 유리
✅ CONCAT(…, ‘cm’)
- 숫자 값을 문자열로 변환
- "ncm" 형식으로 출력 (예: 110 → 110cm)
🔁 비교: 정렬 방식 (비추)
SELECT CONCAT(LENGTH, 'cm') AS MAX_LENGTH
FROM FISH_INFO
ORDER BY LENGTH DESC
LIMIT 1;
- ORDER BY + LIMIT 조합으로 최댓값 추출
- 불필요한 정렬 연산 발생 → 성능 저하 가능
- 정렬 대상이 많을수록 오버헤드 증가