Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- ror실행
- docker
- Cross
- scala
- 주식이야기
- rss
- 나의 취미
- Lift
- Eclipse
- node.js web framework
- flex3
- 나의 프로젝트
- Node.js
- 명사 분석기
- nodejs express
- ajax
- 디즈니씨
- 도커
- 명사 추출기
- php
- 스킨 스쿠버
- C/C++
- iBatis
- express for node.js
- php thumbnail
- 책이야기
- 메일왕창보내는법
- 명사 뽑아내기
- ejb
- 베트남어
Archives
- Today
- Total
nkdk의 세상
오라클 DB설계 및 활용 5일째 1번째 내용 본문
***그룸 함수 : 전체 자료를 그룹별로 구분하여 통계결과를 얻기 위한 함수
--count(),sum(),avg(),max(),min()....
--NULL값은 무시(count(*)은 예외)
SELECT SUM(SAWON_PAY) FROM SAWON; --SUM괄호 안에는 숫자가 와햐한다.
SELECT SAWON_NAME,SUM(SAWON_PAY) FROM SAWON WHERE SAWON_JIK='과장'; --이런 식의 작업은 안된다!!!(SAWON_NAME를 써주면 안된다.)
SELECT SUM(SAWON_PAY) AS 급여합 FROM SAWON WHERE SAWON_JIK='과장';
SELECT SUM(SAWON_PAY) 합,AVG(SAWON_PAY) 평균 , MAX(SAWON_PAY) 최대급여, MIN(SAWON_PAY) 최소급여 , COUNT(SAWON_NAME)인원수 , COUNT(SAWON_JIK) , COUNT(SAWON_PAY), COUNT(SAWON_IBSAIL) ,COUNT(*) FROM SAWON ;
SELECT * FROM SAWON;
--그룹 함수는 값이 NULL인 것은 참여시키지 않는다....
SELECT SUM(SAWON_PAY)/15, SUM(SAWON_PAY)/16 FROM SAWON;
SELECT AVG(SAWON_PAY), AVG(NVL(SAWON_PAY,0)) FROM SAWON;
SELECT COUNT(*),COUNT(SAWON_NO),COUNT(SAWON_PAY) FROM SAWON;
UPDATE SAWON SET SAWON_PAY=5000 WHERE SAWON_NO=1;
--과장은 몇명?
SELECT COUNT(SAWON_JIK) 과장수 FROM SAWON WHERE SAWON_JIK='과장';
--2000이전에 입사한 남자 직원은 몇 명?
SELECT COUNT(SAWON_IBSAIL) FROM SAWON WHERE TO_CHAR(SAWON_IBSAIL,'YYYY')<2000 AND SAWON_SEX='남';
--2000년 이후에 입사한 여자직원은 급여합, 급여평균,인원수는?
SELECT SUM(SAWON_PAY), AVG(SAWON_PAY), COUNT(SAWON_PAY) FROM SAWON WHERE TO_CHAR(SAWON_IBSAIL,'YYYY')>=2000 AND SAWON_SEX='여';NULL인 값은?연산에 참여하지 않는다...
SELECT SUM(SAWON_PAY), AVG(NVL(SAWON_PAY,'0')), COUNT(*) FROM SAWON WHERE TO_CHAR(SAWON_IBSAIL,'YYYY')>=2000 AND SAWON_SEX='여';NULL인 값도 연산에 참여..
--GROUP BY 절: 소계 출력
형식) SELECT 그룹컬럼명... 그룹함수()... FROM 테이블명... WHERE 조건 GROUP BY 그룹칼럼명... HAVING 출력결과조건
(SELECT 앞의 그룹명과 GROUP BY 앞의 그룹명이 같아야 한다.)
--성별 급여 평균, 인원수를 출력
SELECT AVG(SAWON_PAY),COUNT(SAWON_PAY) FROM SAWON WHERE SAWON_SEX='남';
SELECT AVG(SAWON_PAY),COUNT(SAWON_PAY) FROM SAWON WHERE SAWON_SEX='여';
SELECT SAWON_SEX,AVG(SAWON_PAY),COUNT(SAWON_PAY) FROM SAWON GROUP BY SAWON_SEX;
--부서멸 급여합
SELECT BUSER_NUM,SUM(SAWON_PAY) FROM SAWON GROUP BY BUSER_NUM;
--부서별 급여합 : 급여합 8000이상인 자료
SELECT BUSER_NUM,SUM(SAWON_PAY) FROM SAWON GROUP BY BUSER_NUM HAVING SUM(SAWON_PAY)>=8000;
--부서별 급여합 : 남자
SELECT BUSER_NUM,SUM(SAWON_PAY) FROM SAWON WHERE SAWON_SEX='남' GROUP BY BUSER_NUM;
--부서별 급여합 : 급여합이 5000 이상인 남자
SELECT BUSER_NUM,SUM(SAWON_PAY) FROM SAWON WHERE SAWON_SEX='남' GROUP BY BUSER_NUM HAVING SUM(SAWON_PAY)>=5000;
--주의 : GROUP BY 전에 ORDER BY 하지 마라!!!
SELECT BUSER_NUM,SUM(SAWON_PAY) FROM SAWON WHERE SAWON_SEX='남' ORDER BY GROUP BY BUSER_NUM;--오류
SELECT BUSER_NUM,SUM(SAWON_PAY) FROM SAWON WHERE SAWON_SEX='남' GROUP BY BUSER_NUM ORDER BY BUSER_NUM DESC;--결과에 대해서는 ORDER BY를 할 수 있다.
SELECT BUSER_NUM,SUM(SAWON_PAY) FROM SAWON WHERE SAWON_SEX='남' GROUP BY BUSER_NUM ORDER BY SUM(SAWON_PAY);
--부서별 직급별 급여합 출력
SELECT BUSER_NUM,SAWON_JIK,SUM(SAWON_PAY) FROM SAWON GROUP BY BUSER_NUM,SAWON_JIK ORDER BY BUSER_NUM;
--count(),sum(),avg(),max(),min()....
--NULL값은 무시(count(*)은 예외)
SELECT SUM(SAWON_PAY) FROM SAWON; --SUM괄호 안에는 숫자가 와햐한다.
SELECT SAWON_NAME,SUM(SAWON_PAY) FROM SAWON WHERE SAWON_JIK='과장'; --이런 식의 작업은 안된다!!!(SAWON_NAME를 써주면 안된다.)
SELECT SUM(SAWON_PAY) AS 급여합 FROM SAWON WHERE SAWON_JIK='과장';
SELECT SUM(SAWON_PAY) 합,AVG(SAWON_PAY) 평균 , MAX(SAWON_PAY) 최대급여, MIN(SAWON_PAY) 최소급여 , COUNT(SAWON_NAME)인원수 , COUNT(SAWON_JIK) , COUNT(SAWON_PAY), COUNT(SAWON_IBSAIL) ,COUNT(*) FROM SAWON ;
SELECT * FROM SAWON;
--그룹 함수는 값이 NULL인 것은 참여시키지 않는다....
SELECT SUM(SAWON_PAY)/15, SUM(SAWON_PAY)/16 FROM SAWON;
SELECT AVG(SAWON_PAY), AVG(NVL(SAWON_PAY,0)) FROM SAWON;
SELECT COUNT(*),COUNT(SAWON_NO),COUNT(SAWON_PAY) FROM SAWON;
UPDATE SAWON SET SAWON_PAY=5000 WHERE SAWON_NO=1;
--과장은 몇명?
SELECT COUNT(SAWON_JIK) 과장수 FROM SAWON WHERE SAWON_JIK='과장';
--2000이전에 입사한 남자 직원은 몇 명?
SELECT COUNT(SAWON_IBSAIL) FROM SAWON WHERE TO_CHAR(SAWON_IBSAIL,'YYYY')<2000 AND SAWON_SEX='남';
--2000년 이후에 입사한 여자직원은 급여합, 급여평균,인원수는?
SELECT SUM(SAWON_PAY), AVG(SAWON_PAY), COUNT(SAWON_PAY) FROM SAWON WHERE TO_CHAR(SAWON_IBSAIL,'YYYY')>=2000 AND SAWON_SEX='여';NULL인 값은?연산에 참여하지 않는다...
SELECT SUM(SAWON_PAY), AVG(NVL(SAWON_PAY,'0')), COUNT(*) FROM SAWON WHERE TO_CHAR(SAWON_IBSAIL,'YYYY')>=2000 AND SAWON_SEX='여';NULL인 값도 연산에 참여..
--GROUP BY 절: 소계 출력
형식) SELECT 그룹컬럼명... 그룹함수()... FROM 테이블명... WHERE 조건 GROUP BY 그룹칼럼명... HAVING 출력결과조건
(SELECT 앞의 그룹명과 GROUP BY 앞의 그룹명이 같아야 한다.)
--성별 급여 평균, 인원수를 출력
SELECT AVG(SAWON_PAY),COUNT(SAWON_PAY) FROM SAWON WHERE SAWON_SEX='남';
SELECT AVG(SAWON_PAY),COUNT(SAWON_PAY) FROM SAWON WHERE SAWON_SEX='여';
SELECT SAWON_SEX,AVG(SAWON_PAY),COUNT(SAWON_PAY) FROM SAWON GROUP BY SAWON_SEX;
--부서멸 급여합
SELECT BUSER_NUM,SUM(SAWON_PAY) FROM SAWON GROUP BY BUSER_NUM;
--부서별 급여합 : 급여합 8000이상인 자료
SELECT BUSER_NUM,SUM(SAWON_PAY) FROM SAWON GROUP BY BUSER_NUM HAVING SUM(SAWON_PAY)>=8000;
--부서별 급여합 : 남자
SELECT BUSER_NUM,SUM(SAWON_PAY) FROM SAWON WHERE SAWON_SEX='남' GROUP BY BUSER_NUM;
--부서별 급여합 : 급여합이 5000 이상인 남자
SELECT BUSER_NUM,SUM(SAWON_PAY) FROM SAWON WHERE SAWON_SEX='남' GROUP BY BUSER_NUM HAVING SUM(SAWON_PAY)>=5000;
--주의 : GROUP BY 전에 ORDER BY 하지 마라!!!
SELECT BUSER_NUM,SUM(SAWON_PAY) FROM SAWON WHERE SAWON_SEX='남' ORDER BY GROUP BY BUSER_NUM;--오류
SELECT BUSER_NUM,SUM(SAWON_PAY) FROM SAWON WHERE SAWON_SEX='남' GROUP BY BUSER_NUM ORDER BY BUSER_NUM DESC;--결과에 대해서는 ORDER BY를 할 수 있다.
SELECT BUSER_NUM,SUM(SAWON_PAY) FROM SAWON WHERE SAWON_SEX='남' GROUP BY BUSER_NUM ORDER BY SUM(SAWON_PAY);
--부서별 직급별 급여합 출력
SELECT BUSER_NUM,SAWON_JIK,SUM(SAWON_PAY) FROM SAWON GROUP BY BUSER_NUM,SAWON_JIK ORDER BY BUSER_NUM;