안녕하세요 쿼리를 짜다가 막히는게 있어서 여기에 물어봅니다ㅠ
한테이블에 3개의 컬럼이 있는데 그중 큰값 2개를 가져오고 싶습니다.
예를들어 SELECT A, B, C FROM DUAL 이런식으로 테이블이 있고,
A = 3, B=5, C=1 이 들어있다고 가정하고 값이 큰순서대로 2개를 가져오고싶은데 어떻게 해야될까요..
greast(A,B,C) 이후에 두번째를 어떻게 가져올지 모르겠습니다.
감사합니다.
WITH t AS
(
SELECT 1 id, 3 a, 5 b, 1 c FROM dual
UNION ALL SELECT 2, 4, 3, 1 FROM dual
)
SELECT id
, a, b, c
, GREATEST(a, b, c) v_1st
, DECODE(GREATEST(a, b, c), a, GREATEST(b, c)
, b, GREATEST(a, c)
, c, GREATEST(a, b)
) v_2nd_1
, a + b + c - GREATEST(a, b, c) - LEAST(a, b, c) v_2nd_b
, LEAST(a, b, c) v_3rd
FROM t
;
와 정말 감사합니다ㅠㅠ 쿼리보고 이해해보겠습니다!