반응형
집계함수
집계함수 | 설명 |
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 |