|
|
(사용자 3명의 중간 판 64개는 보이지 않습니다) |
1번째 줄: |
1번째 줄: |
| __notoc__ | | __notoc__ |
| https://dbstudy.co.kr/w/resources/assets/dbstudy_iconx1.png | | https://dbstudy.co.kr/w/resources/assets/dbstudy_iconx1.png |
| = Welcome To DB STUDY = | | = Welcome To DB STUDY - {{CURRENTYEAR}}.{{CURRENTMONTHNAME}}.{{CURRENTDAY}}({{CURRENTDAYNAME}}) = |
| | * {{SERVER}} |
| | * 게시글 총 : {{NUMBEROFPAGES}} 건 , 사용자 : {{NUMBEROFUSERS}} 명 , |
| <p sizes="(max-width: 600px) 480px,800px"> | | <p sizes="(max-width: 600px) 480px,800px"> |
| https://dbstudy.co.kr/w/images/dbstudy_main.png | | https://dbstudy.co.kr/w/images/dbstudy_logo.jpg |
| </p> | | </p> |
| == ORACLE ==
| | {{틀:타이틀 라운드 |
| = [[ORACLE SQL 30일 학습|오라클 SQL 30일 학습]]= | | |제목=[[:Category:oracle|오라클]]: {{PAGESINCATEGORY: oracle}} 건 , [[:Category:postgresql|PostgreSql]] : {{PAGESINCATEGORY: postgresql}} 건 , [[:Category:mysql|MySQL]]: {{PAGESINCATEGORY: mysql}} 건, [[:Category:linux|LINUX]]: {{PAGESINCATEGORY: linux}} 건 |
| == [[SQL 기본]] ==
| | |아이콘=emoji_objects |
| === [[데이터 베이스 용어 설명]] ===
| | }} |
| === [[SELECT 구문]] ===
| |
| ==== [[GROUP BY 절]] ====
| |
|
| |
|
| 물론이죠! Oracle의 GROUP BY 절에 대해 초보자도 이해하기 쉽게 설명해드릴게요.
| | = ORACLE = |
|
| |
|
| ⸻
| | == [[ORACLE SQL 30일 학습|오라클 SQL 30일 학습]]== |
| | # [[SQL 기본]] |
| | ## [[데이터 베이스 용어 설명]] |
| | ## [[데이터 베이스 용어 설명#현업에서 사용하는 업무 용어|현업에서 사용하는 업무용어]] |
| | ## [[테이블 컬럼 데이터 유형|컬럼 데이터 유형]] |
| | # [[SQL 실행]] |
| | ## [[테이블 생성 과 데이터입력 ]] |
| | ## [[SELECT 구문|SELECT 기본 구문 작성 순서]] |
| | ### [[GROUP BY 절]] |
| | ### [[WITH 절]] |
| | ### [[SQL 조인]] |
| | ## [[INSERT 구문]] |
| | ## [[UPDATE 구문]] |
| | ## [[DELETE 구문]] |
| | ## [[MERGE 구문]] |
| | ## [[CREATE TABLE 구문]] |
| | ## [[ALTER TABLE 구문]] |
| | ## [[DROP TABLE 구문]] |
| | ## [[TRUNCATE TABLE 구문]] |
| | # SQL 활용 |
| | ## [[오라클SQL 과 안시SQL]] |
| | ## [[SQL 실행원리 와 과정 ]] |
| | ## [[최적의 SQL 작성법]] |
| | ## [[스칼라 인라인뷰 서브쿼리|서브쿼리(스칼라/인라인뷰/서브쿼리)]] |
| | ## [[오라클 내부함수]] |
| | ## [[원도우 함수|윈도우 함수(분석 함수)]] |
| | ## [[집계함수 (aggregate function)]] |
| | ## [[그룹 함수]] |
| | ## [[인덱스]] |
| | ## [[CONNECT BY 절]] |
| | ## [[LATERAL]] |
| | # [[PL/SQL 기초|'''PL/SQL 기초''']] |
| | ## [[함수]] |
| | ## [[프로시져]] |
| | ## [[패키지]] |
| | ## [[트리거]] |
| | # SQL 고급 |
| | ## [[정규표현식(regular expression)]] |
| | ## [[전체 텍스트 검색 match]] |
| | ## [[테이블 샘플링 (Table Sampling)]] |
| | ## [[임시 테이블 (Temporary Tables)]] |
| | ## [[동적 SQL (Dynamic SQL)]] |
| | ---- |
| | == [[ORACLE SQL 튜닝]] == |
| | === [[성능을 고려한 설계]] === |
| | === [[효율적인 SQL 작성법]] === |
| | === [[튜닝 환경 구축]] === |
| | # XPLAN 사용법 |
| | # REAL PLAN 사용법 |
| | # SQL 트레이스 방법 |
| | === [[인덱스 설계]] === |
| | # 인덱스 아키텍처 |
| | # 인덱스 종류 |
| | # 엑세스 패스 |
| | === [[효율적인 조인 방법 ]] === |
| | === [[튜닝 힌트]] === |
| | === [[병렬 쿼리 튜닝]] === |
| | === [[ORACLE 튜닝 대상 조회]] === |
| | === [[파라미터 설계]] === |
| | ---- |
| | == [[ORACLE 백업 과 복구 ]] == |
| | ---- |
|
| |
|
| 1. GROUP BY 절이란?
| | = [[DBA_수행_방법론_(공공/대기업_SI_프로젝트)]]= |
| • 뜻 (영문): GROUP BY is used to group rows that have the same values in specified columns into summary rows.
| | == [[DBA_수행_방법론_(공공/대기업_SI_프로젝트)#개요|개요]] == |
| • 뜻 (한글): GROUP BY는 특정 컬럼 값을 기준으로 같은 값들끼리 묶어서 결과를 보여주는 SQL 절입니다.
| | == [[단계별 수행 방법론]] == |
| | === [[분석 단계]] === |
| | ==== [[산출물]] ==== |
| | ==== [[주요 작업 TASK]] ==== |
| | === [[설계 단계]] === |
| | ==== [[산출물]] ==== |
| | ==== [[주요 작업 TASK]] ==== |
| | === [[구축 단계]] === |
| | ==== [[산출물]] ==== |
| | ==== [[주요 작업 TASK]] ==== |
| | === [[테스트 단계]] === |
| | ==== [[산출물]] ==== |
| | ==== [[주요 작업 TASK]] ==== |
| | === [[전개 단계]] === |
| | ==== [[산출물]] ==== |
| | ==== [[주요 작업 TASK]] ==== |
|
| |
|
| ⸻
| |
|
| |
|
| 2. 특징
| | ---- |
| • 집계 함수(예: COUNT(), SUM(), AVG(), MAX(), MIN())와 함께 자주 사용됩니다.
| |
| • 데이터를 그룹별 요약하거나 분류해서 볼 수 있습니다.
| |
| | |
| ⸻
| |
| | |
| 3. 사용 방법
| |
| | |
| SELECT 컬럼명, 집계함수
| |
| FROM 테이블명
| |
| GROUP BY 컬럼명;
| |
| | |
| | |
| | |
| ⸻
| |
| | |
| 4. 예제
| |
| | |
| 예제 테이블: employees
| |
| | |
| emp_id name department salary
| |
| 1 John Sales 3000
| |
| 2 Alice Sales 3200
| |
| 3 Bob IT 4000
| |
| 4 Carol IT 4200
| |
| 5 David HR 2800
| |
| | |
| 예제 1: 부서별 평균 급여 구하기
| |
| | |
| SELECT department, AVG(salary) AS avg_salary
| |
| FROM employees
| |
| GROUP BY department;
| |
| | |
| 결과
| |
| | |
| department avg_salary
| |
| Sales 3100
| |
| IT 4100
| |
| HR 2800
| |
| | |
| 설명: department(부서)별로 묶어서, 각 부서의 salary(급여) 평균을 구한 것입니다.
| |
| | |
| ⸻
| |
| | |
| 예제 2: 부서별 직원 수 구하기
| |
| | |
| SELECT department, COUNT(*) AS num_employees
| |
| FROM employees
| |
| GROUP BY department;
| |
| | |
| 결과
| |
| | |
| department num_employees
| |
| Sales 2
| |
| IT 2
| |
| HR 1
| |
| | |
| 설명: GROUP BY department를 통해 부서별로 직원 수를 센 것입니다.
| |
| | |
| ⸻
| |
| | |
| 5. 주의사항
| |
| • GROUP BY에 사용하지 않은 컬럼은 SELECT절에 직접 쓸 수 없습니다. (단, 집계 함수 안에 들어가는 경우는 예외)
| |
| • GROUP BY는 정렬 기능이 아닙니다. 정렬은 ORDER BY를 사용해야 합니다.
| |
| | |
| ⸻
| |
| | |
| 좋습니다! 이제 GROUP BY의 복잡한 예제와 함께 자주 같이 쓰이는 **고급 개념 (HAVING, 다중 컬럼 그룹화 등)**도 설명해드릴게요.
| |
| | |
| ⸻
| |
| | |
| 1. HAVING 절
| |
| | |
| 개념
| |
| • HAVING은 GROUP BY로 그룹화한 결과에 조건을 거는 절입니다.
| |
| • WHERE는 그룹화 전에 조건, HAVING은 그룹화 후 조건입니다.
| |
| | |
| ⸻
| |
| | |
| 예제 테이블: sales
| |
| | |
| id product region amount
| |
| 1 Laptop Seoul 2000
| |
| 2 Laptop Busan 1500
| |
| 3 Phone Seoul 1000
| |
| 4 Phone Busan 1200
| |
| 5 Laptop Seoul 2200
| |
| 6 Phone Seoul 1300
| |
| | |
| | |
| | |
| ⸻
| |
| | |
| 예제 1: 지역별로 제품 판매 총합이 3000 이상인 경우만 보기
| |
| | |
| SELECT region, SUM(amount) AS total_sales
| |
| FROM sales
| |
| GROUP BY region
| |
| HAVING SUM(amount) >= 3000;
| |
| | |
| 결과
| |
| | |
| region total_sales
| |
| Seoul 5500
| |
| | |
| 설명: GROUP BY region으로 지역별로 묶고, HAVING을 통해 총합이 3000 이상인 지역만 필터링합니다.
| |
| | |
| ⸻
| |
| | |
| 2. 다중 컬럼 GROUP BY
| |
| | |
| 개념
| |
| • 두 개 이상의 컬럼을 기준으로 복합적으로 그룹화할 수 있습니다.
| |
| | |
| ⸻
| |
| | |
| 예제 2: 지역 + 제품별 판매 총액 구하기
| |
| | |
| SELECT region, product, SUM(amount) AS total_sales
| |
| FROM sales
| |
| GROUP BY region, product;
| |
| | |
| 결과
| |
| | |
| region product total_sales
| |
| Seoul Laptop 4200
| |
| Seoul Phone 2300
| |
| Busan Laptop 1500
| |
| Busan Phone 1200
| |
| | |
| 설명: region과 product를 동시에 그룹화하여, 각 지역-제품 조합별로 총 판매량을 계산했습니다.
| |
| | |
| ⸻
| |
| | |
| 3. GROUP BY + JOIN 활용
| |
| | |
| 복잡한 데이터 분석에는 JOIN과 GROUP BY를 함께 사용합니다.
| |
| | |
| ⸻
| |
| | |
| 예제 테이블
| |
| | |
| employees
| |
| | |
| emp_id name dept_id
| |
| 1 John 10
| |
| 2 Alice 10
| |
| 3 Bob 20
| |
| | |
| departments
| |
| | |
| dept_id dept_name
| |
| 10 Sales
| |
| 20 IT
| |
| | |
| salaries
| |
| | |
| emp_id salary
| |
| 1 3000
| |
| 2 3500
| |
| 3 4000
| |
| | |
| | |
| | |
| ⸻
| |
| | |
| 예제 3: 부서별 평균 급여 구하기 (JOIN 사용)
| |
| | |
| SELECT d.dept_name, AVG(s.salary) AS avg_salary
| |
| FROM employees e
| |
| JOIN departments d ON e.dept_id = d.dept_id
| |
| JOIN salaries s ON e.emp_id = s.emp_id
| |
| GROUP BY d.dept_name;
| |
| | |
| 결과
| |
| | |
| dept_name avg_salary
| |
| Sales 3250
| |
| IT 4000
| |
| | |
| 설명: 여러 테이블을 JOIN해서 dept_name 기준으로 묶고 평균 급여를 계산했습니다.
| |
| | |
| ⸻
| |
| | |
| 4. ROLLUP (고급)
| |
| | |
| ROLLUP은 그룹별 합계 외에 **전체 합계(총계)**까지 같이 보여줍니다.
| |
| | |
| ⸻
| |
| | |
| 예제 4: 제품별 판매 총액과 전체 총액까지 보여주기
| |
| | |
| SELECT product, SUM(amount) AS total_sales
| |
| FROM sales
| |
| GROUP BY ROLLUP(product);
| |
| | |
| 결과
| |
| | |
| product total_sales
| |
| Laptop 3700
| |
| Phone 3500
| |
| NULL 7200
| |
| | |
| 설명: NULL은 전체 총합을 의미합니다. 제품별 합계 + 전체 합계를 한 번에 볼 수 있습니다.
| |
| | |
| ⸻
| |
| | |
| 요약
| |
| | |
| 개념 설명
| |
| GROUP BY 특정 컬럼으로 그룹화
| |
| HAVING 그룹화된 결과에 조건을 거는 절
| |
| 다중 그룹화 두 개 이상 컬럼으로 그룹화
| |
| JOIN + GROUP BY 여러 테이블 연결 후 그룹화
| |
| ROLLUP 그룹별 합계 + 전체 합계까지 한 번에 출력
| |
| | |
| | |
| | |
| ⸻
| |
| | |
| | |
| [[category:oracle]]
| |
| | |
| ==== [[WITH 절]] ====
| |
| ==== [[SQL 조인]] ====
| |
| === [[INSERT 구문]] ===
| |
| === [[UPDATE 구문]] ===
| |
| === [[MERGE 구문]] ===
| |
| | |
| == [[SQL 활용]] ==
| |
| === [[오라클SQL 과 안시SQL]] ===
| |
| === [[SQL 실행원리 와 과정 ]]===
| |
| === [[최적의 SQL 작성법]] ===
| |
| === [[스칼라 인라인뷰 서브쿼리|서브쿼리(스칼라/인라인뷰/서브쿼리)]]===
| |
| | |
| === [[원도우 함수]]===
| |
| === [[집계함수 (aggregate function)]]===
| |
| | |
| === [[그룹 함수]]===
| |
| === [[인덱스]] ===
| |
| === [[CONNECT BY 절]] ===
| |
| === [[LATERAL]] ===
| |
| == [[PL/SQL 기초]] ==
| |
| === [[함수]] ===
| |
| === [[프로시져]] ===
| |
| === [[패키지]] ===
| |
| === [[트리거]] ===
| |
| == [[SQL 고급]] ==
| |
| | |
| === [[ORACLE DBA 30일 학습]] ===
| |