SQL

[MySQL] 집계함수

SangRok Jung 2022. 9. 16. 23:43
반응형

집계함수


집계함수 설명
COUNT 개수
SUM 합계
AVG 평균
MIN 최소
MAX 최대

 

 

 

 

 

 

 

COUNT


 

-- *은 모든 열 이라는 의미가 있다.
SELECT COUNT(*)  FROM sample51;
+----------+
| COUNT(*) |
+----------+
|        5 |
+----------+

-- sample51
+------+------+----------+
| no   | name | quantity |
+------+------+----------+
|    1 | A    |        1 |
|    2 | A    |        2 |
|    3 | B    |       10 |
|    4 | C    |        3 |
|    5 | NULL |     NULL |
+------+------+----------+

 

 

 

▶ name이 A인 것의 합계

SELECT COUNT(*) FROM sample51 WHERE name = 'A';
+----------+
| COUNT(*) |
+----------+
|        2 |
+----------+

 

▶ no행, name행 각각의 합계

mysql> SELECT COUNT(no), COUNT(name)  FROM sample51;
+-----------+-------------+
| COUNT(no) | COUNT(name) |
+-----------+-------------+
|         5 |           4 |
+-----------+-------------+

 

 

 

 

 

 

 

SUM, AVG, MAX, MIN


 

SELECT SUM(quantity) '합계', AVG(quantity)'평균' FROM sample51;
+--------+--------+
| 합계   | 평균   |
+--------+--------+
|     16 | 4.0000 |
+--------+--------+

-- NULL은 제외하고 계산된다

 

 

 

 

 

▶ null값이 0 일때 평균을 구하기

mysql> SELECT AVG(
    -> CASE
    -> WHEN quantity IS NULL THEN 0
    -> ELSE quantity 
    -> END) 'avgnull0'
    -> FROM sample51; 
+----------+
| avgnull0 |
+----------+
|   3.2000 |
+----------+

 

 

 

 

 

 

 

 

ALL과 DISTINCT의 차이


  • ALL의 작성과 미작성의 차이가 없다.
  • DISTINCT는 중복을 제외한 유니크한 값만 출력한다.

 

SELECT ALL name FROM sample51;
+------+
| name |
+------+
| A    |
| A    |
| B    |
| C    |
| NULL |
+------+


SELECT DISTINCT name FROM sample51;
+------+
| name |
+------+
| A    |
| B    |
| C    |
| NULL |
+------+

 

 

 

 

SELECT SUM(ALL quantity) FROM sample51;
+--------------------+
| SUM(ALL  quantity) |
+--------------------+
|                 16 |
+--------------------+


SELECT SUM(DISTINCT quantity) FROM sample51;
+------------------------+
| SUM(DISTINCT quantity) |
+------------------------+
|                     16 |
+------------------------+


-- 유니크한 값을 찾을 수 없기 때문에 같은 결과가 나온다.
반응형

'SQL' 카테고리의 다른 글

[MySQL] EXISTS  (0) 2022.09.17
[MySQL] CASE  (0) 2022.09.16
[MySQL] AS  (0) 2022.09.16
[MySQL] 날짜 연산  (0) 2022.09.16
[MySQL] DELETE, UPDATE  (0) 2022.09.16