3개의 컬럼중 큰값2개를 가져오고 싶습니다.. 0 2 2,275

by DB입문자 [SQL Query] [2023.09.18 09:36:31]


안녕하세요 쿼리를 짜다가 막히는게 있어서 여기에 물어봅니다ㅠ

한테이블에 3개의 컬럼이 있는데 그중 큰값 2개를 가져오고 싶습니다.

예를들어 SELECT A, B, C FROM DUAL 이런식으로 테이블이 있고, 

A = 3, B=5, C=1 이 들어있다고 가정하고 값이 큰순서대로 2개를 가져오고싶은데 어떻게 해야될까요..

greast(A,B,C) 이후에 두번째를 어떻게 가져올지 모르겠습니다.

감사합니다.

by 마농 [2023.09.18 10:02:10]
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
;

 


by DB입문자 [2023.09.18 10:32:49]

와 정말 감사합니다ㅠㅠ 쿼리보고 이해해보겠습니다!

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