cmd로 다운로드 받은 sql을 실행해본다
cmd가 자동으로 sql안에 있는 명령어를 실행해준다
select count (*)||'명' "인원"
from employee
where phone not like '010%';
--count 조건에 맞는 행의 갯수를 출력한다
--()안에는 칼럼명을 써도 되지만 *를 써도 된다
//출력값 3명
conut(*) : 아랫줄 where에 있는 조건의 행의 갯수를 샌다
SELECT SUM(SALARY)
FROM EMPLOYEE
WHERE SUBSTR(EMP_NO, 8, 1) = 1;
SELECT DEPT_CODE,
SUM(SALARY)
FROM EMPLOYEE
GROUP BY DEPT_CODE
SELECT DEPT_CODE,
FLOOR(AVG(SALARY)) 평균
FROM EMPLOYEE
GROUP BY DEPT_CODE
HAVING FLOOR(AVG(SALARY)) > 3000000
ORDER BY 1;
SELECT DEPT_CODE,
JOB_CODE,
SUM(SALARY)
FROM EMPLOYEE
GROUP BY ROLLUP(DEPT_CODE, JOB_CODE)
ORDER BY 1;
이경우 dept_code에 속한 job_code의 각각 salary의 총합이 나오지만
dept_code끼리의 총합도 나온다
dept_code1 | job_code1 | dept_code1 + job_code1인 사람의 salary 합 |
---|---|---|
dept_code1 | job_code2 | dept_code1 + job_code2인 사람의 salary 합 |
dept_code1 | dept_code1의 모든합 | |
dept_code2 | job_code1 | dept_code2+ job_code1인 사람의 salary 합 |
SELECT DEPT_CODE,
JOB_CODE,
SUM(SALARY)
FROM EMPLOYEE
GROUP BY CUBE(DEPT_CODE, JOB_CODE)
ORDER BY 1;
이경우 dept_code에 속한 job_code의 각각 salary의 총합이 나오지만
dept_code끼리의 총합과 job_code의 총합도 출력된다.
dept_code1 | job_code1 | dept_code1 + job_code1인 사람의 salary 합 |
---|---|---|
dept_code1 | job_code2 | dept_code1 + job_code2인 사람의 salary 합 |
dept_code1 | dept_code1의 모든합 | |
dept_code2 | job_code1 | dept_code2+ job_code1인 사람의 salary 합 |
dept_code2 | job_code2 | dept_code2+ job_code2인 사람의 salary 합 |
job_code1 | job_code1의 모든합 | |
job_code2 | job_code2의 모든합 |
select
DEPT_CODE,
JOB_CODE,
SUM(SALARY),
CASE WHEN GROUPING(DEPT_CODE) = 0 AND GROUPING(JOB_CODE) = 1 THEN '부서별합계'
WHEN GROUPING(DEPT_CODE) = 1 AND GROUPING(JOB_CODE) = 0 THEN '직급별합계'
WHEN GROUPING(DEPT_CODE) = 1 AND GROUPING(JOB_CODE) = 1 THEN '총합계'
ELSE '그룹별합계'
END AS "구분"
FROM EMPLOYEE
GROUP BY CUBE(DEPT_CODE, JOB_CODE)
ORDER BY 1;
부서코드 | 직업코드 | 합계 | grouping | |
---|---|---|---|---|
부서코드1 | 직업코드1 | 부서코드1이며 직업코드1인사람의 합계 | sum(salary)의 영역 | 부서0 직업0 |
부서코드1 | 직업코드2 | 부서코드1이며 직업코드2인사람의 합계 | sum(salary)의 영역 | |
부서코드1 | 부서코드1의 합계 | cube가 (직업코드1+2)를 계산한값 | 부서0 직업1 | |
. | . | . | . | . |
. | . | . | . | . |
null | null | 모든 부서코드와 직업코드의 합계 | cube가 (부서코드의 합+직업코드합)을 계산한 값 | 부서1 직업1 |
select emp_name, emp_id from employee
where dept_code='D5'
union all
select emp_name, emp_id from employee
where salary>=2400000;
interscet
select emp_name, emp_id from employee
where dept_code='D5'
intersect
select emp_name, emp_id from employee
where salary>=2400000;
select emp_name, emp_id from employee
where dept_code='D5'
minus
select emp_name, emp_id from employee
where salary>=2400000;
A minus B라면 A에서 B만큼을 뺀 값이 출력된다. 기준이 A
두 개 이상의 테이블에서 연관성을 가지고 있는 데이터들을 따로 분류하여 새로운 가상의테이블을 이용하여 출력함. -> 여러 테이블의 레코드를 조합하여 하나의 열로 표현 한 것
inner Join : 2개의 칼럼을 비교에 같은 데이터만 가지고옴(데이터가 없으면 가지고 오지 않음)
outer Join : 두개의 컬럼값을 비교해을때 업는 데이터도 출력이 가능한 조인
왼쪽것에 값이 없어도 오른쪽에 갑싱 있으면 왼쪽을 null로 하고 출력된다
### 다중조인
```sql
select * from employee
inner join department
on dept_code = dept_id
inner join job using(job_code);
```
- dapartment와 job을 조인했다