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
반응형
'SQL > ORACLE' 카테고리의 다른 글
[order by CASE]oracle order by 질문입니다 (0) | 2015.10.08 |
---|---|
Oracle WHERE 절 ORDER BY 절 GROUP BY 절 각종함수 (0) | 2015.10.08 |
[order by]sql에서 order by 정렬할때 질문요 (0) | 2015.10.08 |
[group by]오라클에서 특정 컬럼의 특정단어들로 group by 하는 법좀 알려주세여 (oracle)~ (0) | 2015.10.08 |
oracle 요일 보는 법(요일 구하기) (0) | 2015.04.03 |
MSSQL VARCHAR(10) 을 ORACLE TO_CHAR 를 사용할 때 자리수표현 (0) | 2014.09.11 |
[Oracle] DATE와 TIMESTAMP(밀리세컨드,현재시간 입력) (0) | 2014.07.14 |
TIMESTAMP 밀리세컨드 시간 계산하기 (0) | 2014.07.14 |