DEVELOPE/MYSQL&MARIADB

SQL GROUP BY / HAVING

소찾나 2017. 10. 17. 09:13

SQL GROUP BY / HAVING

SQL GROUP BY / HAVING




1 group by 절

group by 절은 그룹별로 검색을 할 때 사용되며, group by 절을 사용할 때는 그룹함수와 함께 병행하여 사용하게 된다.

대표적인 그붑 함수에는 COUNT(), AVG(), MIN(), MAX(), SUM() 등이 있다

COUNT(): 개수 , AVG(): 평균, MIN(), 최소값, MAX(): 최대값, SUM(): 합계 구하는 함수다.

mysql> select * from student;
+----+------+-----------+-------+--------+
| no | sno  | name      | jumsu | course |
+----+------+-----------+-------+--------+
|  1 |  100 | 홍길동    |   100 | 수학   |
|  2 |  101 | 김철수    |    90 | 국어   |
|  3 |  102 | 김순이    |    30 | 영어   |
|  4 |  103 | 김말동    |    45 | 국어   |
|  5 |  104 | 정민철    |    80 | 역사   |
|  6 |  105 | 이만수    |    70 | 과학   |
|  7 |  106 | 안철수    |    90 | 영어   |
|  8 |  107 | 김재동    |   100 | 역사   |
|  9 |  108 | 이미자    |    95 | 수학   |
+----+------+-----------+-------+--------+
9 rows in set (0.00 sec)


50점 이상인 학생의 점수별로 group by 한 결과이다.

mysql> select jumsu, count(*) from student where jumsu >= 50 group by jumsu;
+-------+----------+
| jumsu | count(*) |
+-------+----------+
|    70 |        1 |
|    80 |        1 |
|    90 |        2 |
|    95 |        1 |
|   100 |        2 |
+-------+----------+
5 rows in set (0.00 sec)


2 having 절

having 절과 where 절의 차이점은 where 절은 from 절에서 생성된 중간 테이블에서 작동하고, having 절은  group by 절에서 생성된 

중간 테이블에서 작동된다.

mysql> select jumsu, count(*) from student where jumsu >= 50 group by jumsu having count(*) > 1;

+-------+----------+

| jumsu | count(*) |

+-------+----------+

|    90 |        2 |

|   100 |        2 |

+-------+----------+

2 rows in set (0.00 sec)


having 절에 사용된 조건 count(*) > 1



이글이 도움이 되셨다면 아래에 로그인이 필요없는 공감 버튼을 클릭해주세요 ^^