본문 바로가기
dev/DB

[DB/MySQL] 집계함수

by dev_Step 2022. 7. 5.
count(*) 전체 행의 갯수를 반환
count(expr) 널이 아닌 expr의 갯수를 반환
count(distinct expr) 널이 아닌 expr의 고유한 갯수를 반환(중복없는)

 

>>    MIN( expr)      /     MAX( expr )   ==> expr의 최대 최솟값을 반환한다.

 

 

>> 아래의 쿼리는 empno = 0 의 조건에 해당하는 결과가 없기 때문에 결과가 아무것도 반환되지 않는다.

>> 하지만 집계함수를 사용한 쿼리는 where를 만족하는행이 없더라도 하나의 행을 반환한다. 즉 데이터 존재여부를 확인할 떄 사용할 수 있다.

>> Mysql : ifnull() --> oracle : nvl()

 

>> SUM( expr )   /  expr 의 합계값을 반환

>> sum(expr) 일때 expr의 합이 null일경우 -> null 리턴

>> 연산시에 null 과의 연산시 null리 리턴된다  ( 0+ null ==> null,,,,,, 100+ null ==> null) 이다.

>> comm이 null이기 떄문에 c1은 null이 리턴되었다.

 

 

 

=====>oracle : DECODE(컬럼, 조건, 참일떄, 거짓일떄) 

=====>Mysql : IF(조건,참일때, 거짓일때) 

 

 

 

 

>> avg( expr )    // expr의 평균 값을 구해준다

>> 이때 expr의 null 포함여부에 따라 값이 달라진다.

>> avg(comm)의 경우는 Null 값을포함하지 않고 0값은 포함한 값들의 합을 / 갯수로 나눈것

>> avg(ifnull(comm,0)) 의경우는 null 값을 0으로 변경하여 평균 구하는데 포함시킨다는것

 

 

=================================================================================

 

통계함수

>> STDDEV함수 | 표준편차를 반환한다.

>> STDDEV( expr ) 

 

 

>> VARIANCE 함수 |  분산을 반환한다. 

>> VARIANCE( expr )

 

>> STATS_MODE 함수 | 최빈값을 반환한다.

>> STATS_MODE( expr )

 

>> 등수함수 rank() over(order by 컬럼)  // 동반등수 있고, 그만큼 건너 뛴 다음 등수

>> 등수함수 dense_ranl() over() // 동반등수 있고, 바로 연결된 다음 등수

>> over안에 

( partition by 어떤그룹별  order by 어느기준으로 등수 ) 를 통해서  그룹내 등수까지 출력

>>CUME_DIST() WITHIN GROUP(order by ~)  누적분포 0< x <=1

>> percent_rank() over()  // 백분률 등수

 

 

 

 

>> RANK 관련해서는 아래에  작성한 내용이있다.

https://step-by-step-dev.tistory.com/47?category=1253712

 

 

 

 

 

 

 

 

 

 

 

 

 

'dev > DB' 카테고리의 다른 글

[DB/Mysql] HAVING, GROUP BY  (0) 2022.07.05
[DB/MySQL] 기타함수(Group_concat)  (0) 2022.07.05
[DB/ORACLE] WHERE 절  (0) 2022.07.04
[DB/Oracle] 조건 우선순위  (0) 2022.07.04
[DB/MySQL] Mysql 설치  (0) 2022.06.23