Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 데이터시각화
- aws jupyter notebook
- 노마드코딩
- type hint
- 알고리즘 스터디
- 알고리즘
- Matplotlib
- openCV
- python
- pandas
- 코딩테스트
- 프로그래머스
- javascript
- MySQL
- 알고리즘스터디
- Join
- 파이썬
- queue
- 선그래프
- NumPy
- programmers
- 자료구조
- Selenium
- 정보처리기사 c언어
- 백준
- 가상환경
- Stack
- dataframe
- String Method
- Algorithm
Archives
- Today
- Total
조금씩 꾸준히 완성을 향해
[MySQL] Group By, Having 본문
GROUP BY (그룹화)
- 그룹으로 묶어주는 역할을 수행
※ 집계 함수와 함께 사용!
▶ 사용 가능한 집계 함수
- AVG() : 평균
- MIN() : 최소 값
- MAX() : 최대 값
- COUNT() : 행의 개수
- COUNT(DISTINCT 컬럼명) : 행의 개수 (컬럼명 기준 중복 제외)
- STDEV() : 표준 편차
- VARIANCE() : 분산
▶ 형태
SELECT * FROM 테이블명 GROUP BY 열1, 열2...
▶ sample51 확인
mysql> SELECT * FROM sample51;
+------+------+----------+
| no | name | quantity |
+------+------+----------+
| 1 | A | 1 |
| 2 | A | 2 |
| 3 | B | 10 |
| 4 | C | 3 |
| 5 | NULL | NULL |
+------+------+----------+
▶ sample51 name열을 그룹바이
mysql> SELECT * FROM sample51 GROUP BY name;
+------+------+----------+
| no | name | quantity |
+------+------+----------+
| 1 | A | 1 |
| 3 | B | 10 |
| 4 | C | 3 |
| 5 | NULL | NULL |
+------+------+----------+
▶ sample51 name열을 그룹바이 후 no의 최소값, name, quantity 의 합계 표시
mysql> SELECT MIN(no), name, SUM(quantity) FROM sample51 GROUP BY name;
+---------+------+---------------+
| MIN(no) | name | SUM(quantity) |
+---------+------+---------------+
| 1 | A | 3 |
| 3 | B | 10 |
| 4 | C | 3 |
| 5 | NULL | NULL |
+---------+------+---------------+
▶ sample51 name 열을 그룹바이 후 name의 개수가 1인 열의 name 과 COUNT(name) 표시
※ 조건 지정 (HAVING)
-- where 사용(x)
mysql> SELECT name, COUNT(name) FROM sample51 WHERE COUNT(name)=1 GROUP BY name;
-- error
-- query 실행 순서 :from > where > group by > select
-- => select 실행 전에는 count(name)이라는 열이 존재하지 않는다.
-- having 사용 (o)
mysql> SELECT name, COUNT(name) FROM sample51 GROUP BY name HAVING COUNT(name) = 1;
+------+-------------+
| name | COUNT(name) |
+------+-------------+
| B | 1 |
| C | 1 |
+------+-------------+
-- 실행 순서 : group by > having
▶sample51의 name열을 n, COUNT(name)열을 cn으로 지정
> cn이 1인 행을 선택하고 n을 그룹바이 > n, cn열 표시
-- MySQL에서만 예외 : 다른 SQL에서는 error가 뜨는 코드
mysql> SELECT name AS n, COUNT(name) AS cn FROM sample51 GROUP BY n HAVING cn = 1;
+------+----+
| n | cn |
+------+----+
| B | 1 |
| C | 1 |
+------+----+
▶ sample51 name열을 그룹바이 후 name, name열의 개수, quantity열의 합계를 quantitiy열의 합계가 높은 순부터 정렬하여 표시
-- 실행순서 : groupby > order by
mysql> SELECT name, COUNT(name), SUM(quantity) FROM sample51 GROUP BY name ORDER BY SUM(quantity) DESC;
+------+-------------+---------------+
| name | COUNT(name) | SUM(quantity) |
+------+-------------+---------------+
| B | 1 | 10 |
| A | 2 | 3 |
| C | 1 | 3 |
| NULL | 0 | NULL |
+------+-------------+---------------+
'Database > MySQL' 카테고리의 다른 글
[MySQL] 숫자 관련 함수 정리 (0) | 2022.09.18 |
---|---|
[MySQL] subquery 서브쿼리 기본 사용예제 (0) | 2022.09.18 |
[MySQL] Alter Table (0) | 2022.09.17 |
[MySQL] select 사용법 정리 (0) | 2022.09.17 |
[MySQL] 기본 사용법 정리( table 생성, 수정, 삭제 등) (0) | 2022.09.17 |