by 구지또 [2022.02.16 08:41:19]
| 판매번호 | 재고 | 이름 | 종류 |
| 1 | 3 | 양배추 | 야채 |
| 2 | 1 | 양배추 | 야채 |
저기위에서
재고순위 MAX값을 뽑고싶은데 이름 하고 종류가 같아서 자꾸 두줄이 나오는데
판매번호 1 재고 3 만 나오게하고싶은데 어떻게해야할까요
row_number 함수를 사용한 방법입니다~
재고가 같다면 rank 함수를 사용하거나 다른 기준이 필요할 것 같습니다.
with t (판매번호, 재고, 이름, 종류) as (
select 1, 3, '양배추', '야채' from dual union all
select 2, 1, '양배추', '야채' from dual
)
select * from (
select 판매번호, 재고, 이름, 종류, row_number() over (partition by 이름, 종류 order by 재고 desc) rn from t)
where rn = 1
SELECT *
FROM [테이블명]
WHERE 재고 = (
SELECT MAX(재고)
FROM [테이블명]
)
;
SELECT *
FROM (SELECT 판매번호, 재고, 이름, 종류
, RANK() OVER(ORDER BY 재고 DESC) rk
FROM t
) a
WHERE rk = 1
;