★where 과 group by의 차이점 숙지.
select 5 필수 마지막에수행 일련의 작업이 끝나고 난후 사용자가 확인할수있는 결과 출력물에대한 결과를 어떻게 정의할지에 대해 명령을 내려주는 부분.
from 1 필수
where 2 전체데이터에서 일부데이터를 선택할경우 사용하는것 / 전체로작업할지, 부분으로작업할지 체크하는 부분. 버릴 데이터가 있는지 없는지체크.
group by 3 where로 줄어든 결과를 가지고 일련의 집계, 그룹핑을 할지말지 체크하는 부분
having 4 그룹핑된 결과에 대해 필터링 할지말지 추가적으로 사용하는 부분.
order by 6 select 후 특정부분 기준으로 정렬을 할지말지 결정한다.
--소계를 낼수있는 rollup기능 : 합계도출- groupby에서 사용할수있음! / null값 처리하고 rollup 기능 사용
--주의할점 select절에서 옵션이 들어가고 함수가 적용되어서 결과가 바뀌었다는건, groupby에도 똑같이 들어가야한다는것!!
--rollup 사용한후에 셀렉트절에 가서 한번더 nvl사용해서 null값을 총합계로 바꿔야함
--rollup이 실행되고 나면 새로운 값이 생성이 되는거기때문에 이결과컬럼에대한 제어는 select에서 할수있다.
---law데이터 기준으로 필터링할떄는 where / 집계된 결과에서 필터링해서 표시하려면 having by
SELECT department_id, count(*) as 건수
FROM employees
GROUP BY department_id
having count(*) > 5 -- 집계된 결과에서 필터링 해줄거기때문에 having절에는 집계 결과+조건이 나와야한다
ORDER BY 건수 desc
;
/* select 5 필수 마지막에수행 일련의 작업이 끝나고 난후 사용자가 확인할수있는 결과 출력물에대한 결과를 어떻게 정의할지에 대해 명령을 내려주는 부분.
from 1 필수
where 2 전체데이터에서 일부데이터를 선택할경우 사용하는것 / 전체로작업할지, 부분으로작업할지 체크하는 부분. 버릴 데이터가 있는지 없는지체크.
group by 3 where로 줄어든 결과를 가지고 일련의 집계, 그룹핑을 할지말지 체크하는 부분
hav'ing 4 그룹핑된 결과에 대해 필터링 할지말지 추가적으로 사용하는 부분.
order by 6 select 후 특정부분 기준으로 정렬을 할지말지 결정한다.
*/
SELECT *
FROM employees
WHERE department_id in(40, 50, 60); --Where절은 원본데이터를 바로 가지고 온후에 행을 일부만 선택할지 여부 선택.
SELECT job_id
, count(*) as 직원수 --- jobid 별 직원수
, round(avg(salary), 2) as 평균급여 ----- 그룹핑된 jobid별 급여의 평균
FROM employees
WHERE department_id in(40, 50, 60)
group by job_id
having round(avg(salary) ,2) > 5000 ---직원들의 평균급여가 5000이상인 사람들만 표시
order by 3 desc
;
--소계를 낼수있는 rollup기능 합계도출- groupby에서 사용할수있음! / null값 처리하고 rollup 기능 사용
--주의할점 select절에서 옵션이 들어가고 함수가 적용되어서 결과가 바뀌었다는건, groupby에도 똑같이 들어가야한다는것!!
--rollup 사용한후에 셀렉트절에 가서 한번더 nvl사용해서 null값을 총합계로 바꿔야함
--rollup이 실행되고 나면 새로운 값이 생성이 되는거기때문에 이결과컬럼에대한 제어는 select에서 할수있다.
SELECT nvl(nvl(to_char(department_id),'대기'),'총합계') as 부서
, count(*) as 건수 ---null값은 대기발령이라는 값을 넣어준다. nvl과 to_char활용
FROM employees
group by rollup(nvl(to_char(department_id),'대기')) ---맨위에 null로 총합계건수가 표시된다.
order by 건수 desc
;
'📝수업후기 잊지말기 > 빡공단31기 SQL' 카테고리의 다른 글
빡공단31기 SQL 21강 (0) | 2023.02.21 |
---|---|
빡공단31기 SQL 20강 (0) | 2023.02.20 |
빡공단31기 SQL 18강 (0) | 2023.02.18 |
빡공단31기 SQL 17강 (0) | 2023.02.17 |
빡공단31기 SQL 16강 (0) | 2023.02.16 |