✅ 1. GROUP BY 와 HAVING
📌 개념 차이
항목설명
| GROUP BY | 데이터를 기준값으로 묶어서 집계할 때 사용 (예: 부서별 평균) |
| HAVING | GROUP BY로 묶은 결과에 조건을 걸 때 사용 |
| WHERE | GROUP BY 하기 전에 데이터를 필터링 |
✅ 예제 1: 부서별 평균 급여 구하기 (GROUP BY)
sql
복사편집
SELECT dept_id, AVG(salary) AS avg_salary FROM employees GROUP BY dept_id;
▶ dept_id 별로 묶어서 평균 salary 계산
✅ 예제 2: 평균 급여가 3000 이상인 부서만 보기 (HAVING)
sql
복사편집
SELECT dept_id, AVG(salary) AS avg_salary FROM employees GROUP BY dept_id HAVING AVG(salary) >= 3000;
▶ GROUP BY로 부서별 평균을 구한 뒤
▶ HAVING으로 평균 3000 이상인 부서만 추출
✅ 예제용 테이블 구조
sql
복사편집
CREATE TABLE employees ( emp_id NUMBER, emp_name VARCHAR2(50), dept_id NUMBER, salary NUMBER ); INSERT INTO employees VALUES (1, '홍길동', 10, 2800); INSERT INTO employees VALUES (2, '이순신', 10, 3200); INSERT INTO employees VALUES (3, '강감찬', 20, 4000); INSERT INTO employees VALUES (4, '유관순', 20, 3000);
→ dept_id 10 평균 = 3000
→ dept_id 20 평균 = 3500
✅ 2. ORDER BY
📌 개념
- 결과를 정렬하는 키워드
- 기본은 오름차순 (ASC), 내림차순은 DESC
✅ 예제 1: 급여 순으로 직원 정렬
sql
복사편집
SELECT emp_name, salary FROM employees ORDER BY salary DESC;
▶ 급여 높은 순으로 정렬
✅ 예제 2: 부서 오름차순, 같은 부서 내에서는 급여 높은 순
sql
복사편집
SELECT emp_name, dept_id, salary FROM employees ORDER BY dept_id ASC, salary DESC;
✅ 3. 자주 쓰는 SQL 명령어 요약표
명령어설명
| SELECT | 데이터 조회 |
| FROM | 대상 테이블 지정 |
| WHERE | 조건 필터링 |
| GROUP BY | 그룹별 집계 |
| HAVING | 그룹 집계 조건 |
| ORDER BY | 정렬 |
| JOIN | 여러 테이블 연결 (INNER, LEFT, RIGHT 등) |
| IN | 리스트 내 포함 조건 |
| BETWEEN | 범위 조건 (예: BETWEEN 1000 AND 2000) |
| EXISTS | 서브쿼리 존재 여부 체크 |
| CASE WHEN | 조건 분기 (if처럼 사용) |
| DISTINCT | 중복 제거 |
| LIMIT / FETCH FIRST | 결과 개수 제한 |
| RANK() / ROW_NUMBER() | 순위 계산용 함수 |
✅ 추가 예제: 종합 문제
부서별로 급여 총합을 구하고, 5000 이상인 부서만 표시하되,
급여 총합이 높은 순으로 정렬
sql
복사편집
SELECT dept_id, SUM(salary) AS total_salary FROM employees GROUP BY dept_id HAVING SUM(salary) >= 5000 ORDER BY total_salary DESC;
✅ 초보자 분석 순서 요약
- FROM → 어떤 테이블?
- WHERE → 사전 필터링?
- GROUP BY → 묶는 기준?
- HAVING → 그룹 조건?
- ORDER BY → 정렬 기준?
- SELECT → 최종으로 보여줄 컬럼?
✅ 추가로 배우면 좋은 것들
영역추천 주제
| JOIN | INNER JOIN, LEFT JOIN |
| 집계 함수 | SUM(), AVG(), COUNT(), MAX() |
| 서브쿼리 | SELECT절, WHERE절, HAVING절에 사용 |
| 윈도우 함수 | RANK(), ROW_NUMBER(), OVER() |
| 조건 분기 | CASE WHEN THEN END |
| INSERT/UPDATE/DELETE | DML 기본 조작 |
'Sql' 카테고리의 다른 글
| SQL 프로그램없이 웹으로 실습하기 (1) | 2025.07.07 |
|---|---|
| 실무에서 SQL 쿼리를 초보자가 쉽게 이해하고 익히려면 (0) | 2025.07.07 |
| IN,BETWEEN,EXISTS (0) | 2025.07.07 |
| BxM 프레임워크의 일반적인 계층 이해(1) (1) | 2025.07.02 |
| BxM 프레임워크 이해 (레스토랑 예제) (0) | 2025.07.02 |