1. GROUP BY
SELECT * FROM table_A GROUP BY group_column;
- 데이터베이스에서 특정 칼럼을 기준으로 데이터를 그룹화할 때 사용
- 마치 과일 바구니에서 사과는 사과끼리, 포도는 포도끼리 따로 모으는 과정과 비슷
- 보통 데이터를 그룹으로 묶은 뒤, 그 그룹별로 합계, 평균, 개수 등을 계산하는 집계 함수(Aggregate Function)와 함께 자주 사용
- GROUP BY는 SELECT 안에 있는 비집계 Column과 일치해야 함
GROUP BY와 짝꿍처럼 쓰이는 함수들
| 함수 | 설명 |
|---|
| COUNT() | 행의 개수를 계산 |
| SUM() | 데이터 합계를 계산 |
| AVG() | 데이터의 평균을 계산 |
| MAX() / MIN() | 최대값 또는 최소값 |
2. HAVING
SELECT * FROM table_A
GROUP BY group_column
HAVING 조건;
- HAVING은 GROUP BY와 떼어놓을 수 없으며 "그룹화된 결과에 필터를 거는 조건절" 즉, 그룹화된 결과 중에서 또 걸러주는 역할을 함
- GROUP BY 이후 사용 가능 => 그 외 것들과 조합해서 사용 불가
- HAVING은 필수로 쓸 필요 없음, 조건을 걸고 분류하고 싶을 때만 사용하면 됨.
⭐️ WHERE 절은 데이터베이스가 그룹화를 하기 전에 개별 행(row)을 검사
| 구분 | WHERE | HAVING |
|---|
| 적용시점 | 데이터를 그룹화하기 전 | 데이터를 그룹화한 후 |
| 대상 | 개별 행(row) | 그룹화된 결과(Group) |
| 집계함수 | 사용불가 | 사용가능 |


3. LIMIT
SELECT * FROM table_A
LIMIT 개수; 또는 LIMIT offset, 개수;
- 쿼리 결과로 출력되는 행(Row)의 개수를 제한할 때 사용하는 키워드
- 방대한 데이터 중에서 보고 싶은 만큼만 끊어서 가져올 때 아주 유용
- 긴 테이블을 조회할 때 필수 --> 실무에서 대형테이블에 SELECT *는 위험
- 조회 속도를 빠르게 할 때 사용: pagination에서 사용

LIMIT 3; 은 정보 3개만 가져오라는 말

- LIMIT 10,3; —> 앞에 10개는 버리고 3개의 정보를 가져온라는 의미
4. SQL 실행순서
