Yet Never Lose Faith

- Good to Great , Jim Collins

How To Preprocess Image Data 자세히보기

MSSQL

MSSQL count, group by - 가격이 여러개 존재하는 품목을 찾자!

Kellyyyy 2020. 6. 8. 08:00

 

업체 A는 가구를 판매한다.
판매 품목에 대한 물품코드, 색상, 가격 등은 DBMS를 통해 관리하고 있다.

 

A의 상품들은 한가지 룰이 있다.

 

한 품목은 여러개의 색상을 가질 수 있지만 색상이 달라도 가격은 항상 동일해야한다.

 

그런데 어느날, 직원의 실수로 몇몇 품목의 가격이 잘못 업데이트 됐다.
당신은 IT 지원부서의 일원으로 가격이 여러개 존재하는 품목을 찾아달라는 요청을 받았다.

MSSQL로 쿼리를 작성해보자.

 

우선 데이터를 살펴보자.

 

 

SELECT *
FROM ITEM
ORDER BY ITM_CD

 

 

 

 

내가 골라내야하는 코드는 위와 같이 

품목코드가 같은데 가격이 다른 애들이다.

 

먼저 GROUP BY 절을 통해

ITEM 테이블에 존재하는 (ITM_CD,SALCST) 조합들을 찾아낸다. 

 

 

SELECT ITM_CD, SALCST
FROM ITEM
GROUP BY ITM_CD, SALCST

 

 

 

 

당신의 목표는 가격이 2개 이상 존재하는 ITM_CD를 찾아내는 것이다.

 

그러기 위해서는 이 리스트에서 ITM_CD로 다시 GROUP BY 하여

COUNT가 2 이상인 ITM_CD를 찾아내면 된다.

 

 

SELECT ITM_CD
FROM
(SELECT ITM_CD, SALCST
FROM ITEM
GROUP BY ITM_CD, SALCST
) X
GROUP BY ITM_CD
HAVING COUNT(ITM_CD) >= 2

 

 

 

 

데이터 하나로 한번 확인해보겠다.

 

 

SELECT *
FROM ITEM
WHERE ITM_CD = 'CVBCDK'

 

 

 

 

성공!