메뉴 여닫기
개인 메뉴 토글
로그인하지 않음
만약 지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.
 
(사용자 3명의 중간 판 101개는 보이지 않습니다)
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}}) =
= 전문가가 되고 싶다면 기본에 충실 하라. (Return To Basics) =
* {{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 튜닝]] ==
=== [[튜닝 개론]]===
:::# [[카디널리티 와 셀렉티비티]]
:::# [[성능을 고려한 설계]]
:::# [[효율적인 SQL 작성법]]


=== [[튜닝 환경 구축]] ===
:::# [[DBMS_XPLAN 사용법]]
:::# [[REAL PLAN 사용법]]
:::# [[SQL 트레이스 방법]]


1. GROUP BY 절이란?
=== [[인덱스 설계]] ===
• 뜻 (영문): GROUP BY is used to group rows that have the same values in specified columns into summary rows.
:::# [[인덱스 아키텍처]]
• 뜻 (한글): GROUP BY는 특정 컬럼 값을 기준으로 같은 값들끼리 묶어서 결과를 보여주는 SQL 절입니다.
:::# [[오라클 인덱스 종류|인덱스 종류]]
:::# [[엑세스 패스]]


=== [[옵티마이져]] ===
==== [[JPPD(Join Predicate PushDown,조인절 PUSHDOWN)]]====
==== [[View pushed predicate (조건절 PUSHDOWN)]]====


2. 특징
=== [[튜닝 힌트]] ===
• 집계 함수(예: COUNT(), SUM(), AVG(), MAX(), MIN())와 함께 자주 사용됩니다.
• 데이터를 그룹별 요약하거나 분류해서 볼 수 있습니다.


=== [[대용량 데이터 튜닝]] ===
==== [[병렬 쿼리 튜닝]] ====
=== [[ORACLE 튜닝 대상 조회]] ===
=== [[성능 문제 식별 방법론과 튜닝 접근법]]===
----


3. 사용 방법
== [[ORACLE 아키텍쳐의 이해]] ==
=== [[테이블 조인 방식|오라클 조인 과 알고리즘 ]] ===
==== [[NL 조인]]====
==== [[HASH 조인]]====
==== [[MERGE 조인|SORT MERGE 조인]]====
==== [[세미조인]] ====
==== [[안티조인]] ====
=== [[파라미터 설계]] ===
=== [[오라클 테이블의 구조]]===
=== [[오라클 파티션테이블의 구조]] ===
=== [[데이터 블럭의 구조]] ===
=== [[오라클 컬럼의 구조]] ===
==== [[오라클 컬럼의 저장순서]] ====
==== [[컬럼의 순서가 변경시 ROW의 물리적 구조변화|컬럼 순서 변경시 ROW의 물리구조 변화]]====
==== [[오라클 컬럼저장 방식 개선 (12c 업그레이드) ]] ====
=== [[오라클 인덱스의 구조]] ===


SELECT 컬럼명, 집계함수
----
FROM 테이블명
GROUP BY 컬럼명;


= [[DBA_수행_방법론_(공공/대기업_SI_프로젝트)]]=
== [[DBA_수행_방법론_(공공/대기업_SI_프로젝트)#개요|개요]] ==
== [[단계별 수행 방법론]] ==
=== [[분석 단계]] ===
==== [[산출물]] ====
==== [[주요 작업 TASK]] ====
=== [[설계 단계]] ===
==== [[산출물]] ====
==== [[주요 작업 TASK]] ====
=== [[구축 단계]] ===
==== [[산출물]] ====
==== [[주요 작업 TASK]] ====
=== [[테스트 단계]] ===
==== [[산출물]] ====
==== [[주요 작업 TASK]] ====
=== [[전개 단계]] ===
==== [[산출물]] ====
==== [[주요 작업 TASK]] ====




----
 
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일 학습]] ===

2025년 10월 24일 (금) 12:47 기준 최신판

dbstudy_iconx1.png

Welcome To DB STUDY - 2025.10월.29(수요일)

전문가가 되고 싶다면 기본에 충실 하라. (Return To Basics)

dbstudy_logo.jpg

 emoji_objects오라클: 47 건 , PostgreSql : 1 건 , MySQL: 0 건, LINUX: 0 건

ORACLE

ORACLE SQL 튜닝

튜닝 개론

  1. 카디널리티 와 셀렉티비티
  2. 성능을 고려한 설계
  3. 효율적인 SQL 작성법

튜닝 환경 구축

  1. DBMS_XPLAN 사용법
  2. REAL PLAN 사용법
  3. SQL 트레이스 방법

인덱스 설계

  1. 인덱스 아키텍처
  2. 인덱스 종류
  3. 엑세스 패스

옵티마이져

JPPD(Join Predicate PushDown,조인절 PUSHDOWN)

View pushed predicate (조건절 PUSHDOWN)

튜닝 힌트

대용량 데이터 튜닝

병렬 쿼리 튜닝

ORACLE 튜닝 대상 조회

성능 문제 식별 방법론과 튜닝 접근법


ORACLE 아키텍쳐의 이해

오라클 조인 과 알고리즘

NL 조인

HASH 조인

SORT MERGE 조인

세미조인

안티조인

파라미터 설계

오라클 테이블의 구조

오라클 파티션테이블의 구조

데이터 블럭의 구조

오라클 컬럼의 구조

오라클 컬럼의 저장순서

컬럼 순서 변경시 ROW의 물리구조 변화

오라클 컬럼저장 방식 개선 (12c 업그레이드)

오라클 인덱스의 구조


DBA_수행_방법론_(공공/대기업_SI_프로젝트)

개요

단계별 수행 방법론

분석 단계

산출물

주요 작업 TASK

설계 단계

산출물

주요 작업 TASK

구축 단계

산출물

주요 작업 TASK

테스트 단계

산출물

주요 작업 TASK

전개 단계

산출물

주요 작업 TASK