오라클 min() 쿼리좀 부탁드려요~~ 0 6 564

by 여리당 [SQL Query] [2018.08.23 09:00:29]


거래처 품목 단가
A AA 100
B AA 200
C AA 300
A BB 300
B BB 200
C BB

50

데이터가 있을때 최저단가 품목의 거래처,품목,단가 row만 빼내고 싶어요

결과

A AA 100
C BB 50

 

by 우리집아찌 [2018.08.23 09:04:52]
WITH T ( "거래처" ,"품목", "단가" ) AS (
SELECT 'A','AA',100 FROM DUAL UNION ALL
SELECT 'B','AA',200 FROM DUAL UNION ALL
SELECT 'C','AA',300 FROM DUAL UNION ALL
SELECT 'A','BB',300 FROM DUAL UNION ALL
SELECT 'B','BB',200 FROM DUAL UNION ALL
SELECT 'C','BB',100 FROM DUAL 
)

SELECT * 
  FROM (SELECT T.* 
             , RANK() OVER(ORDER BY 단가 ) RN
         FROM T 
       ) 
  WHERE RN = 1 
  

 


by 여리당 [2018.08.23 09:11:47]

답변 감사합니다.

그런데 품목별 최저단가입니다.

참고해서 만들어볼께요~~!!


by 우리집아찌 [2018.08.23 09:12:35]
-- 다시 올립니다.
-- 품목별 최저 단가가 두개일때는 거래처 선책은 어떻게 해야하나요?

WITH T ( "거래처" ,"품목", "단가" ) AS (
SELECT 'A','AA',100 FROM DUAL UNION ALL
SELECT 'B','AA',200 FROM DUAL UNION ALL
SELECT 'C','AA',300 FROM DUAL UNION ALL
SELECT 'A','BB',300 FROM DUAL UNION ALL
SELECT 'B','BB',200 FROM DUAL UNION ALL
SELECT 'C','BB',100 FROM DUAL 
)

SELECT * 
  FROM (SELECT T.* 
             , ROW_NUMBER() OVER(PARTITION BY 품목 ORDER BY 단가 ) RN
         FROM T 
       ) 
  WHERE RN = 1 
  

 


by 여리당 [2018.08.23 09:28:08]

둘다 출력합니다.~

좋은정보~ 감사합니다~~ ^^


by 우리집아찌 [2018.08.23 09:29:44]

둘다 출력시에는 RANK 로 바꿔주세요.


by 마농 [2018.08.23 09:26:20]

최저 단가가 둘 이상일 경우 출력 규칙을 정해야 합니다.
  1. 모두 다 출력 할지? ==> ROW_NUMBER 대신 RANK 이용
  2. 하나만 나오도록 정렬 기준을 추가할지?  ==> ORDER BY 단가, 거래처
  3. 기타 다른 형태? 해당 거래처들을 컴마로 묶어서 표현?

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입