select col0, count(col1) from table0 group by type;

YOUNGJOO-YOON·2021년 12월 16일
0

database

목록 보기
4/5

mysql> select * from hero_list;
+----+------+---------+
| no | type | name    |
+----+------+---------+
|  0 |    1 | ABC     |
|  1 |    1 | DEF     |
|  2 |    1 | ZEF     |
|  3 |    2 | ALT     |
|  4 |    2 | KEVIN   |
|  5 |    2 | DRAGOON |
|  6 |    1 | as      |
|  7 |    1 | zo      |
+----+------+---------+
8 rows in set (0.00 sec)

mysql> select type, count(name) as cnt from hero_list group by type;
+------+-----+
| type | cnt |
+------+-----+
|    1 |   5 |
|    2 |   3 |
+------+-----+
2 rows in set (0.01 sec)

type과 count(name)을 선택한다,
from hero_list table에서,
group by type; type으로 이 둘을 묶어서 보여준다

결과적으로

보길 원하는 column은 type과 count(name) column이고
table은 hero_list를 사용하고,
group by type으로 type을 기준으로 그룹화한다.

type의 값은 1, 2 뿐이므로 1끼리 묶어주고 2끼리 묶어준다

그리고 type과 count(name)을 보여준다 type이 두 번 나오는데 이는 type으로 묶어준 결과를
type으로 보고싶다는 것이다.

type을 기준으로 묶었는데 type을 빼고 보여주면 type으로 묶인건지 결과만 보고는 알 수 없기 때문이다.

type을 빼고 sql문을 작성해보자.

select no, count(name) from hero_list group by type;
실행하면...

ERROR 1055 (42000): Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'hero.hero_list.no' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
이런 에러가 발생한다.

profile
이 블로그의 글은 제 생각을 정리한 글과 인터넷 어딘가에서 배운 것을 정리한 글입니다. 출처는 되도록 남기도록 하겠습니다. 수정 및 건의 오류 등이 있으면 언제든지 댓글 부탁드립니다.

0개의 댓글