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 |