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
이글이 도움이 되셨다면 아래에 로그인이 필요없는 공감 버튼을 클릭해주세요 ^^