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 조합으로 최댓값 추출
  • 불필요한 정렬 연산 발생 → 성능 저하 가능
  • 정렬 대상이 많을수록 오버헤드 증가