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 40978 게시물 읽기
No. 40978
카운트 함수 여러개 사용 어떻게 하나요(서브쿼리없이)
작성자
어려워
작성일
2015-10-20 22:41
조회수
8,474

CREATE TABLE EMP (

EMPNO NUMBER(10),

ENAME VARCHAR(20),

JOB VARCHAR(20),

MGR NUMBER(10),

HIREDATE DATE,

SAL NUMBER(10),

COMM NUMBER(10),

DEPTNO NUMBER(10)

)

 

INSERT INTO EMP values(7369, 'SMITH', 'CLERK', 7902, TO_DATE('17-12-1980', 'DD-MM-YYYY') , 800,'',20);

INSERT INTO EMP values(7499, 'ALLEN', 'SALESMAN', 7698, TO_DATE('20-2-1981', 'DD-MM-YYYY'), 1600,'300',30);

INSERT INTO EMP values(7521, 'WARD', 'SALESMAN', 7698, TO_DATE('22-2-1981', 'DD-MM-YYYY'), 1250,'500',30);

INSERT INTO EMP values(7566, 'JONES', 'MANAGER', 7839, TO_DATE('02-4-1981', 'DD-MM-YYYY'), 2975,'',20);

INSERT INTO EMP values(7654, 'MARTIN', 'SALESMAN', 7698, TO_DATE('28-9-1981', 'DD-MM-YYYY'), 1250,'1400',30);

INSERT INTO EMP values(7698, 'BLAKE', 'MANAGER', 7839, TO_DATE('01-5-1981', 'DD-MM-YYYY'), 2850,'',30);

INSERT INTO EMP values(7782, 'CLARK', 'MANAGER', 7839, TO_DATE('09-6-1981', 'DD-MM-YYYY'), 2450,'',10);

INSERT INTO EMP values(7788, 'SCOTT', 'ANALYST', 7566, TO_DATE('19-4-1987', 'DD-MM-YYYY'), 3000,'',20);

INSERT INTO EMP values(7839, 'KING', 'PRESIDENT', '', TO_DATE('17-11-1981', 'DD-MM-YYYY'), 5000,'',10);

INSERT INTO EMP values(7844, 'TURNER', 'SALESMAN', 7698, TO_DATE('08-9-1981', 'DD-MM-YYYY'), 1500,'0',30);

INSERT INTO EMP values(7876, 'ADAMS', 'CLERK', 7788, TO_DATE('23-5-1980', 'DD-MM-YYYY'), 1100,'',20);

INSERT INTO EMP values(7900, 'JAMES', 'CLERK', 7698, TO_DATE('03-12-1981', 'DD-MM-YYYY'), 950,'',30);

INSERT INTO EMP values(7902, 'FORD', 'ANALYST', 7566, TO_DATE('03-12-1981', 'DD-MM-YYYY'), 3000,'',20);

INSERT INTO EMP values(7934, 'MILLER', 'CLERK', 7782, TO_DATE('23-1-1982', 'DD-MM-YYYY'), 1300,'',10);

 

 

위의 테이블에서 아래의 결과를 얻고 싶습니다.

 

문제의 내용은 HIREDATE 의 년도별로 인원을 찾는 겁니다.

서브쿼리로 하면 어렵지 않지만 서브쿼리 없이 하는 방법을 알고 싶습니다

 

TOTAL   1980    1981    1982    1987

-----  -----  -----  -----   -----

14         1         2        10        1

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

SELECT COUNT(*) total
     , COUNT(DECODE(TO_CHAR(hiredate, 'yyyy'), '1980', 1)) "1980"
     , COUNT(DECODE(TO_CHAR(hiredate, 'yyyy'), '1981', 1)) "1981"
     , COUNT(DECODE(TO_CHAR(hiredate, 'yyyy'), '1982', 1)) "1982"
     , COUNT(DECODE(TO_CHAR(hiredate, 'yyyy'), '1987', 1)) "1987"
  FROM emp
;

마농(manon94)님이 2015-10-20 23:56에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
40982퇴직율 구하는 쿼리 튜닝 [3]
쿼리요청
2015-10-28
9586
40980SQLP 문제 이해가 안갑니다;; [2]
J
2015-10-22
8724
40979특정 시점 이후 데이터가 수정된 테이블 찾는 방법을 알고싶습니다. [1]
한동훈
2015-10-21
8489
40978카운트 함수 여러개 사용 어떻게 하나요(서브쿼리없이) [1]
어려워
2015-10-20
8474
40977쿼리 좀 부탁합니다. [1]
땡구리
2015-10-20
8598
40976구오라클에서 신오라클로 마이그레이션시 userid를 변경하는데 속도 질문입니다 [1]
허윤정
2015-10-20
8407
40975파티션을 힌트로 사용하려는데.... [2]
임금펭귄
2015-10-20
8425
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.016초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다