728x90
반응형

oracle sql문에서 정렬 방식에 임의만든 값을 앞이나 맨뒤로 나오게 하는 쿼리가?

 

 학번  수학  영어  국어
 1  80  70  90
 2  20  30  10
 3 50 50  50

 

이런 테이블이 있으면

쿼리로 뽑을 때에는

 

 학번  수학  영어  국어
 1  80  70  90
 2  20  30  10
 3  50  70  60
 총합계  150  170  160


 

이런씩으로 한번의 쿼리로 만들어야 합니다

 

웹에 데이블을 적용 한다면 쿼리를  그냥 테이블 쿼리 뽑고

총합계 는 스스로 계산 해서 적용 하거나 합계 부분 쿼리를 뽑거나 하면 되는데

 

이런 방식이 아니 한번에 쿼리를 총합계 까지 뽑아서 총합계가 맨 끝으로나오던지 맨 앞으로 나오던지 해야 합니다.

어떤 정렬 방식에 구애 받지 않고 총합계가 앞에 나오거나 맨 뒤에 나오게 하는 쿼리 방식이 없을까요?

 

단 학번은 정렬이 되어야 하고 총합계만 앞이나 뒤쪽으로 나오게 ^^

 

 

답변 :

ROLLUP 원리만 알면 간단합니다...;

SELECT

      DECODE(GROUPING(학번), 1, '총합계', 학번) AS 학번

    , SUM(수학) AS 수학 

    , SUM(영어) AS 영어 

    , SUM(국어) AS 국어

FROM t

GROUP BY ROLLUP(학번)

ORDER BY GROUPING(학번), 학번 -- 총합계를 맨 뒤로

 

총합계를 맨 앞에 나오게하려면 ORDER BY만 살짝 바꾸면 됩니다.

ORDER BY GROUPING(학번) DESC, 학번 -- 총합계를 맨 앞으로

728x90
반응형
블로그 이미지

nineDeveloper

안녕하세요 현직 개발자 입니다 ~ 빠르게 변화하는 세상에 뒤쳐지지 않도록 우리모두 열심히 공부합시다 ~! 개발공부는 넘나 재미있는 것~!

,