프로그래밍 언어/MySQL

Where In 활용하기

2024. 2. 14. 00:54
목차
  1. 문제
  2. 재정의
  3. 피드백

문제

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 


 

재정의

다음과 같이 테이블이 주어진다.

여기서 카테고리별로 가장 비싼 품목에 대해서 출력하면 되는 단순한 문제이다.

 

 

CATEGORY로 GROUP BY를 하고, MAX(PRICE)를 하면 손 쉽게 풀릴 것 같지만 그렇지 않다.

PRODUCT_NAME엔 집계 함수를 쓰지 못해 아마도 제일 처음 있는 값이랑 묶일 것이다.

MAX(PRODUCT_NAME)을 할 수도 없는 마당이다.

 

생각을 해보면, CATEGORY, MAX_PRICE가 정해지면 PRODUCT_NAME은 하나밖에 존재하지 않는다.

즉 3개 중에, 2개를 일치하는 경우를 뽑으면 일치 할 것이란 이야기.

WHERE
    (CATEGORY, PRICE) IN
    (
        SELECT CATEGORY, MAX(PRICE)
        FROM FOOD_PRODUCT
        WHERE CATEGORY IN ('과자', '국', '김치', '식용유')
        GROUP BY CATEGORY
    )

 

그래서 정답은 다음과 같이 귀결된다.

SELECT
    CATEGORY,
    PRICE AS MAX_PRICE,
    PRODUCT_NAME

FROM
    FOOD_PRODUCT

WHERE
    (CATEGORY, PRICE) IN
    (
        SELECT CATEGORY, MAX(PRICE)
        FROM FOOD_PRODUCT
        WHERE CATEGORY IN ('과자', '국', '김치', '식용유')
        GROUP BY CATEGORY
    )

ORDER BY
    MAX_PRICE DESC

 

성급하게 GROUP BY를 쓰면 문제가 복잡해진다.

2개가 결정되면, 나머지는 자연스럽게 결정 되므로,

WHERE IN 다중조건으로 쉽게 해결할 수 있다.

 


 

피드백

GROUP BY를 메인쿼리에 할 지, 서브 쿼리에 할지를 생각하고,

특정 조건만 고려해도 자명하다면 WHERE IN을 활용 할것

저작자표시 비영리 변경금지 (새창열림)

'프로그래밍 언어 > MySQL' 카테고리의 다른 글

비트 연산 활용하기  (0) 2024.02.22
특정 단위로 테이블 만들기  (0) 2024.02.21
서브 테이블로 복잡한 쿼리 풀기  (0) 2024.02.11
서브 쿼리로 데이터 끼워 넣기  (0) 2024.02.11
SQL 코딩 테스트 훈련  (0) 2024.02.08
  1. 문제
  2. 재정의
  3. 피드백
'프로그래밍 언어/MySQL' 카테고리의 다른 글
  • 비트 연산 활용하기
  • 특정 단위로 테이블 만들기
  • 서브 테이블로 복잡한 쿼리 풀기
  • 서브 쿼리로 데이터 끼워 넣기
코딩 악귀
코딩 악귀
고민하고 발전하는 코더의 발자취.
코딩 악귀
가짜 개발자
코딩 악귀
전체
오늘
어제
  • 분류 전체보기 (48)
    • 프로그래밍 언어 (10)
      • Python (1)
      • Java (2)
      • MySQL (7)
    • 개발 관련 (7)
      • Agile (4)
      • 마음가짐 (2)
      • 셋업 (1)
    • 알고리즘 (12)
    • 프로젝트 (18)
      • Beatn-beat [비튼 - 비트] (17)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

최근 댓글

최근 글

hELLO · Designed By 정상우.
코딩 악귀
Where In 활용하기
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.