프로그래머스

[프로그래머스] 가격이 제일 비싼 식품의 정보 출력하기

ys.k 2023. 12. 21. 20:49

포스팅에 앞서 내용이 틀릴 수 있습니다.
해당 부분 지적 감사히 받습니다.

문제를 보자.

 

sql injection을 공부할 땐 mysql을 많이 사용했다.

 

행의 개수를 원하는 만큼 추출할 때, limit을 사용하면 되었다.

 

하지만 oracle을 공부하던 중 오라클은 사용법이 조금 다른 것 같아 포스팅한다.

 

행 개수

 

Mysql

select * from table limit 1;

 

Oracle

select * from (select * from table) where rownum = 1;

으로 같은 1개의 행을 추출하는 쿼리이지만, 서로 다른 양상을 보인다.

 

또한 생성형 ai의 발달로 재미난 결과를 얻을 수 있었다.

SELECT PRODUCT_ID, PRODUCT_NAME, PRODUCT_CD, CATEGORY, PRICE,
           RANK() OVER (ORDER BY PRICE DESC) price_rank
    FROM FOOD_PRODUCT

 

from 절에 서브쿼리를 통해 rank() over(order by) col_name을 통해

서브 쿼리 외부의 where 조건절에 순위를 불러올 수 도 있다.

신기하다

 

다중 IN

Oracle

WHERE (DEPTNO, JOB) IN ((20'MANAGER'), (30'CLERK'));

을 통해 deptno가 20 이면서 job이 manager인 것과, 30이면서 clerk인 것을 조회할 수 있다.