[Database] group by having, AVG MIN MAX

group by having


group by는 말 그대로 그룹을 짓는 것인데 일반 select 문에서 잘 안쓰이고 주로 통계를 낼 때 쓰인다. 높으신 분들이나 임원들은 실무 데이터보다 통계 데이터를 주로 보고 보고서에 쓰기 때문에 주의깊게 사용해야 한다.
group by는 group by로 묶은 컬럼만 조회할 수 있다. 예를 들어 만약 ‘select * from procure_procure_request group by unit;’ 치면 에러가 난다. groub by unit으로 묶은 데이터를 보려면 다음과 같이 unit 컬럼만 조회해야 한다.

select unit from procure_procure_request group by unit;

그리고 다음과 같이 group으로 묶은 값 중 가장 큰 값의 no를 보려면 다음과 같이 MAX(procure_request_no)를 추가한다.

select unit, MAX(procure_request_no) 
from procure_procure_request 
group by unit;

만약 group by를 사용하고 조건을 걸고 싶으면 where가 아닌 having을 사용해야한다.

select unit
from procure_procure_request 
group by unit
having unit = '001';

그러나 having은 잘 쓰일 일이 없다.

AVG MIN MAX


AVG는 평균을 구하는 것이다. 아이템 코드 006부터 0011까지 품목을 조회하는 SQL문을 쓴다고 해보자

select * 
from procure_item 
where (item_cd > '006 and item_cd < '0011');

여기서 물건값 평균을 구하고 싶으면 * 대신 avg(cost)를 쓰면 된다. 물건 값 말고 다른 값 평균을 구하고 싶으면 avg(컬럼명)으로 변경하면 된다.

select avg(cost) 
from procure_item
where (item_cd > '006' and item_cd < '0011');

여기서 최소값을 구하려면 avg(cost) 자리에 min(cost)를 넣으면 된다.

select min(cost) 
from procure_item
where (item_cd > '006' and item_cd < '0015');

마찬가지로 최대값을 구하려면 min(cost) 대신 max(cost)를 넣으면 된다.

select max(cost) 
from procure_item
where (item_cd > '006' and item_cd < '0015');

AVG, MIN, MAX 이 세 개는 통계 관리 낼 때 굉장히 자주 쓰인다.






© 2021.11. by 21thkafka

Powered by 21thkafka