-- 집계함수(성능이 많이 떨어짐)
--주의 : 집계함수는 WHERE 절에서 사용 할 수 없으며, GROUP BY를 사용하지 않는 경우 일반 컬럼과 사용불가능이며 결과는 한줄(행이 하나)로 출력된다.
COUNT : 행의 개수 (NULL은 제외)
SUM : 합
AVG : 평균 (NULL은 제외)
STDDEV : 표준편차 (NULL은 제외)
VARIANCE : 분산 (NULL은 제외)
MAX : 최대값
MIN : 최소값
--일반적으로 전체 행수를 구하기 위해서는 *, 또는 NULL을 허용하지 않는 컬럼(예:기본키)를 사용한다.
SELECT COUNT(*) FROM insa; -- 전체 행수
SELECT COUNT(num) FROM insa; -- 전체 행수
SELECT COUNT(tel) FROM insa; -- tel 컬럼 행수(NULL 제외)
SELECT COUNT(NVL(tel,'0')) FROM insa; --tel 컬럼(NULL 포함) NVL함수로 tel이 NULL인 데이터를 0으로 바꿔줬기 때문이다.
SELECT name, COUNT(*) FROM insa; -- 에러 : 일반컬럼(name 컬럼)과 사용불가
예제)
-- 서울사람은 몇명
SELECT COUNT(*) FROM insa WHERE city='서울';
-- 부서의 수는?
SELECT COUNT(buseo) FROM insa;
SELECT COUNT(DISTINCT buseo) FROM insa;
--남자와 여자인원수는 ?
SELECT COUNT( DECODE(MOD(SUBSTR(ssn, 8,1),2),1, '남')) 남자,
COUNT( DECODE(MOD(SUBSTR(ssn, 8,1),2),0, '여')) 여자
FROM insa;
-- 기본급여에 모든 집계함수를 쓰시오
SELECT SUM( basicpay),AVG(basicpay),MAX(basicpay), MIN(basicpay), MIN(basicpay), STDDEV(basicpay), VARIANCE(basicpay) FROM insa;
-- 주의
데이타)
score
90
null
90
AVG(score)--> null은 포함 하지 않고 계산 한다. 90
AVG(NVL(score , 0)) --> null을 포함하고 계산한다. 60
-- basicpay의 총합, 남자의 basicpay의 총합, 여자의 basicpay의 총합
SELECT SUM(basicpay) 총합,
SUM(DECODE(MOD(SUBSTR(ssn, 8,1),2),1, basicpay)) 남자,
SUM(DECODE(MOD(SUBSTR(ssn, 8,1),2),0, basicpay)) 여자
FROM insa;
SELECT '총합' title,SUM(basicpay) 금액 FROM insa
UNION
SELECT '남자' title,SUM(DECODE(MOD(SUBSTR(ssn,8,1),2),1, basicpay)) 금액 FROM insa
UNION
SELECT '여자' title,SUM(DECODE(MOD(SUBSTR(ssn,8,1),2),0,basicpay))금액 FROM insa;
=>title을 이용하여 행별로 출력이 가능하게 만들었다.
'오라클' 카테고리의 다른 글
오라클 GROUP BY : 그룹별 통계 (0) | 2013.05.30 |
---|---|
오라클 WHERE절에서 SELECT문 사용하기 (0) | 2013.05.30 |
오라클 집합연산자 (0) | 2013.05.30 |
오라클 DECODE : 각각의 조건에 맞는 값에 대한 처리 결과 리턴(CASE 보다 성능 떨어짐) (0) | 2013.05.30 |
오라클 LIKE : 주어진 문자열이 패턴과 일치 하는지 여부 판단(성능별로) (0) | 2013.05.30 |