sql 독학 강의 # 복수 행(window) 함수 잘 사용 하기(기본 사용법) 9편 -sTricky
컨텐츠 index 1. count 함수 사용 하기 2. sum 함수 사용 하기 3. avg 함수 사용 하기 4. max, min 함수 사용 하기 5. stddev 함수 사용 하기 6. variance 함수 사용 하기 |
안녕하세요.
오늘부터는 복수 행 함수, 흔히 window 함수에 관해서 SQL 독학 강의 포스팅을 이어 가도록 하겠습니다.
SQL에서 사용되는 복수 행 함수는 단일 행 함수와는 다르게 한 번에 여러 데이터에 대한 결과를 출력하는 함수를 말합니다.
복수 행 함수를 흔히 window 함수라고도 하고 그룹 함수라고도 지칭합니다. 어떤 정해진 것이 있다가 보다는 복수 행, window, 그룹 이렇게 세 가지 명칭을 잘 숙지하고 계시면 될 것 같습니다. 어차피 다 같은 것을 뜻하닌깐요.
복수 행 함수에 대한 강의를 시작하기 앞서서 null과 관련된 이야기를 하나 하고 넘어가도록 하겠습니다. 모든 복수 행 함수 안에 칼럼명을 넣었을 때 해당 칼럼 값에 null 값이 있다면 이것은 제외하고 결과가 나오니 이에 대해서 헷갈리지 않으셨으면 좋겠습니다. 또한 쿼리를 작성할 때도 주의를 하셔야 합니다.
하나 예를 들어 보겠습니다. 아래와 같은 테이블이 있고, 데이터가 있다고 합시다.
여기에서 bonus 칼럼을 보면 이름이 홍길동, 손흥민의 경우 null 값이 입력되어 있습니다.
여기에다가 아래와 같이 SQL을 작성해서 실행해 보겠습니다. avg() 함수는 평균을 구하는 함수를 뜻합니다.
select avg(bonus) from class.salary;
이랬을 때 결과는 아래와 같습니다.
bonus 칼럼에 null이 아닌 데이터가 200, 400, 200이 각각 있는데 이것들의 합인 800을 3으로 나눈 값이 결과로 출력이 되었습니다.
하지만, 의도가 5명에 대한 평균값을 구하고 싶었다면? 결과가 잘못 나오게 된 것 이겠죠.
이럴 때는 아래와 같이 SQL을 작성해야 합니다.
select avg(ifnull(bonus,0)) from class.salary;
이렇게 SQL을 작성해서 실행을 하면 아래와 같이 결과가 나옵니다.
800을 5로 나눈 160이 결과로 나오게 되는 것 이죠.
앞선 시간에서 배웠던 ifnull 함수를 이용해서 null인 bonus의 칼럼 값을 0으로 바꾸어 avg() 함수, 즉 평균을 내어라라는 SQL이 된 것입니다.
복수 행 함수를 사용할 때 가장 큰 주의 사항이니 꼭!! 머릿속에 넣어두고 SQL 독학 강의를 이어가시길 바랍니다.
복수 행 함수에도 정말 많은 종류가 있습니다. 하나하나씩 상황을 바꿔 가며 예를 들어 설명을 해드리겠습니다.
그럼 시작하겠습니다.
#이전 강의 보러 가기#
2020/04/07 - [Database/sql 강의] - sql 독학 강의 # 단일행 함수 잘 사용 하기(일반 함수) 8편 -sTricky
1. count 함수 사용 하기
count() 함수는 입력되는 데이터의 총건수를 반환합니다. 위에 예를 들었던 class.salary 테이블을 대상으로 SQL을 실행해보겠습니다.
select count(*) from class.salary;
위와 같이 count 함수에서는 * 를 넣어서 사용할 수 있습니다. 전체 칼럼을 대상으로 총건수를 계산해서 반환하는 것 이죠. count() 함수 안에 특정 칼럼명을 넣는다면 앞서 말씀드린 바와 같이 해당 칼럼에서 null값을 제외한 데이터 총건수가 반환됩니다.
2. sum 함수 사용 하기
sum() 함수는 입력된 데이터들의 합계 값을 구해서 반환하는 함수입니다. 사용법은 예제를 참고하시기 바랍니다.
select sum(salary) from class.salary;
class.salary 테이블의 salary 칼럼 값의 총합이 반환되었습니다.
3. avg 함수 사용 하기
avg() 함수는 입력된 데이터 값의 평균값을 반환하는 함수입니다. 아래 사용법을 참고하시기 바랍니다.
select avg(salary) from class.salary;
salary 칼럼의 평균값인 350이 반환되었습니다.
4. max, min 함수 사용 하기
max()와 min() 함수는 예상하셨다시피 최댓값과 최솟값을 구하는 함수입니다. 이 두 함수를 한 SQL에서 한 번에 실행 해 보도록 하겠습니다.
select max(salary), min(salary) from class.salary;
위 SQL과 같이 한번에 이런 식으로 실행해도 됩니다.
결과가 예상한 데로 최대값, 최소값으로 잘 나왔습니다.
5. stddev 함수 사용 하기
stddev() 함수는 표준편차를 구하는 함수입니다. 함수 하나로 쉽게 표준 편차를 SQL을 통해 구하실 수 있습니다.
select stddev(salary) from class.salary;
salary 칼럼의 표준 편차가 리턴되었습니다.
6. variance 함수 사용 하기
variance() 함수는 분산을 구하는 함수입니다. 사용법은 위 함수들과 같습니다.
select variance(salary) from class.salary;
salary 칼럼 값들에 대한 분산 값이 리턴되었습니다.
오늘은 비교적 간단한 복수 행 함수, window 함수, 그룹 함수 사용법에 대해서 알아보았습니다.
다음 시간에는 좀 더 고급스럽게(?) 복수 행 함수를 사용하는 방법에 대해서 포스팅하겠습니다.
질문 사항이 있으시면 댓글로 남겨 주시면 감사하겠습니다!!
감사합니다!
#다음 강의 보러 가기#
2020/04/13 - [Database/sql 강의] - sql 독학 강의 # 복수 행(window) 함수 잘 사용 하기(group by) 10편 -sTricky
by.sTricky
'Database > sql 강의' 카테고리의 다른 글
sql 독학 강의 # mysql join (정의 및 종류) 11편 -sTricky (6) | 2020.04.16 |
---|---|
sql 독학 강의 # 복수 행(window) 함수 잘 사용 하기(group by) 10편 -sTricky (5) | 2020.04.13 |
sql 독학 강의 # 단일행 함수 잘 사용 하기(일반 함수) 8편 -sTricky (6) | 2020.04.07 |
sql 독학 강의 # 단일행 함수 잘 사용 하기(형 변환 함수) 7편 -sTricky (6) | 2020.04.07 |
sql 독학 강의 # 단일행 함수 잘 사용 하기(날짜 함수) 6편 -sTricky (12) | 2020.03.31 |