database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 23961 게시물 읽기
No. 23961
부서별, JOB별 합계 구하기
작성자
www
작성일
2005-09-05 23:00
조회수
1,951

 

manager cleak 매니저와 cleak를 제외한 나머지 사람들 total
10(부서번호) 3000 1500 1100 5600
20(부서번호) 1100 300 1000 2400
30(부서번호) 2000 800 1200 4000
total 6100 2600 3300 12000


 

이렇게 나오도록 해야하는 게 조건입니다.

생각보담 어렵더군요.

이리저리 쿼리를 돌려보아도, 어렵네요.

고수님중 아시는 분들 계시면, 도움바랍니다.

수고하세요. ^^

이 글에 대한 댓글이 총 5건 있습니다.

우선 테이블 형태 부터 올려 주세요.

그래야 쿼리를 짤수가 있을 것 같은데요.

 

아~또 위 결과나오는 것을 다시 자세히 설명좀 해주세요.

이해가 잘 안되는 부분이 있어서요.^^

단테님이 2005-09-06 08:25에 작성한 댓글입니다.
이 댓글은 2005-09-06 08:26에 마지막으로 수정되었습니다. Edit

대략적으로 다음과 같이 하시면 될듯...

select 부서번호

         , sum(decode(누구, 'manager', Amt, 0)) AS manager

         , sum(decode(누구, 'cleak', Amt, 0)) AS cleak

         , sum(decode(누구, 'manager', 0, 'cleak', 0, Amt)) AS Others

         , sum(Amt) AS total

FROM 테이블

WHERE 조건

GROUP BY rollup(부서번호)

 

나그네님이 2005-09-06 10:56에 작성한 댓글입니다.
이 댓글은 2005-09-06 11:20에 마지막으로 수정되었습니다. Edit

죄송합니다. ^^;;

일반적인 EMP테이블입니다.

 

SQL> DESC EMP
 이름                                                  널?      유형
 ------------------------------------------------ --------

 EMPNO                                      NOT NULL NUMBER(4)
 ENAME                                                      VARCHAR2(10)
 JOB                                                            VARCHAR2(9)
 MGR                                                            NUMBER(4)
 HIREDATE                                                       DATE
 SAL                                                            NUMBER(7,2)
 COMM                                                           NUMBER(7,2)
 DEPTNO                                                         NUMBER(2)

===============================================================

 

윗분말씀대로 응용하니까,

 

select DEPTNO,
   sum(decode(job,'MANAGER',SAL)) "MANAGER",
   sum(decode(job,'CLERK',SAL)) "CLERK",
   sum(decode(job,'MANAGER',NULL,'CLERK',NULL,SAL)) "ETC",
   SUM(SAL) "TOTAL"
from EMP
GROUP BY DEPTNO

 

이렇게 나오는대요..

==========================================================

DEPTNO    MANAGER      CLERK        ETC      TOTAL
------ ---------- ---------- ---------- ----------
    10       2450       1300       5000       8750
    20       2975       1900       6000      10875
    30       2850        950       5600       9400

===========================================================

 

하단에도 Total값이 나오도록 할 수 없을까요? ^^

www님이 2005-09-06 12:39에 작성한 댓글입니다. Edit

제가 적은 글에는 group by rollup(부서코드)라고 적었는데,

님께서는 rollup을 빼뜨리신듯....

 

rollup을 사용하시면 부서코드는 null이면서 해당 열들의 합계가 나올텐데요...^^

나그네님이 2005-09-06 15:24에 작성한 댓글입니다. Edit

select  decode(re.rnum,1,tot.dep,'Total')   dep,
        sum(tot.ma)     ma,
        sum(tot.cl)     cl,
        sum(tot.etc)    etc,
        sum(tot.total)  total
from   (select  to_char(e.deptno)    dep,
                sum(decode(e.job,'MANAGER',e.sal)) ma,
                sum(decode(e.job,'CLERK',e.sal)) cl,
                sum(decode(e.job,'MANAGER',null,'CLERK',null,e.sal)) etc,
                sum(e.sal) total       
        from    emp     e
        group by e.deptno
       )    tot,
       (select  rownum  rnum
        from    emp
        where   rownum  <= 2
       )    re
group by decode(re.rnum,1,tot.dep,'Total')
;

 

 

dep     ma      cl       etc      total

 10      2450   1300   5000     8750
 20      2975   1900   6000    10875
 30      2850     950   5600     9400
Total   8275    4150 16600    29025

 

이상...이렇게 나오네요. 나그네님이 사용한 rollup 을 정확히 몰라서

억지로(?) 만들었네요.^^이히~

단테님이 2005-09-06 17:48에 작성한 댓글입니다.
이 댓글은 2005-09-06 18:03에 마지막으로 수정되었습니다. Edit
[Top]
No.
제목
작성자
작성일
조회
23964listner.log화일에 관해서... [1]
궁금이
2005-09-06
1711
23963오라클 라이센스 관련 문의. [5]
문의자
2005-09-06
1745
23962[질문]데이터베이스 설계시 DataType에 관한 질문 입니다. [16]
박승호
2005-09-05
20313
23961부서별, JOB별 합계 구하기 [5]
www
2005-09-05
1951
23960[질문]프로시져를 사용하는 원인 [1]
최규운
2005-09-05
1327
23959ORA-00911: 문자가 부적합합니다 [3]
최규운
2005-09-05
11316
23958[질문] 이미 들어가 있는 데이터 UPDATE시.. 다시 조회 [8]
마린보이
2005-09-05
2419
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다