Database

[Database] MariaDB - Select, Insert, Update, Delete(3)

Richard.Ryu 2024. 3. 14. 15:56
반응형

이번에는 Select 문의 Group 을 알아보겠습니다.

 

Group by 를 사용하게 되면, 여러 값들을 집계함수를 사용하여 편리하게 계산하거나, 결과를 출력 할 수 있습니다.

 

(2)에서 사용한 테이블 그대로 사용하겠습니다.

age_users
+----+----------+-----+
| id | username | age |
+----+----------+-----+
|  1 | ryu      |  20 |
|  2 | choi     |  31 |
|  3 | kim      |  34 |
|  4 | joe      |  45 |
|  5 | park     |  22 |
+----+----------+-----+

users
+----+----------+------------------+---------------------+
| id | username | email            | created_at          |
+----+----------+------------------+---------------------+
|  1 | ryu      | ryu@test.com     | 2024-03-13 22:14:42 |
|  2 | kim      | kim@test.com     | 2024-03-13 22:54:12 |
|  3 | joe      | joe@test.com     | 2024-03-13 22:54:12 |
|  4 | choi     | choi@test.com    | 2024-03-13 22:54:12 |
|  5 | ryu      | ryutest@test.com | 2024-03-14 00:39:07 |
+----+----------+------------------+---------------------+

 

위 테이블에서 age_user 에서의 age 값을 기준으로 count를 확인하고 싶다 하면,

 

 select age, count(*) as user_count from age_users group by age;

+-----+------------+
| age | user_count |
+-----+------------+
|  20 |          1 |
|  22 |          1 |
|  31 |          1 |
|  34 |          1 |
|  45 |          1 |
+-----+------------+

age_users 테이블에서 age 라는 칼럼을 그룹화(20,22,31,34,45),

 

age 칼럼 별 count한 값을 user_count 라는 칼럼으로 반환합니다.

 

insert 로 나이가 20인 사람을 한명 더 추가해서 결과를 보겠습니다.

MariaDB [test]> select age, count(*) as user_count from age_users group by age;
+-----+------------+
| age | user_count |
+-----+------------+
|  20 |          2 |
|  22 |          1 |
|  31 |          1 |
|  34 |          1 |
|  45 |          1 |
+-----+------------+

 

AVG, SUM 등의 함수도 사용 가능합니다.

그룹화 된 age 합 > select age, count(*) as count, sum(age), avg(age) from age_users group by age; 

+-----+-------+----------+----------+
| age | count | sum(age) | avg(age) |
+-----+-------+----------+----------+
|  20 |     2 |       40 |  20.0000 |
|  22 |     1 |       22 |  22.0000 |
|  31 |     1 |       31 |  31.0000 |
|  34 |     1 |       34 |  34.0000 |
|  45 |     1 |       45 |  45.0000 |
+-----+-------+----------+----------+

 

반응형