---
id: sql-group-by
title: "SQL Group By"
category: "Database"
status: "draft"
verification_status: "conceptual"
canonical_id: ""
aliases: ["SQL GROUP BY Statement", "GROUP BY clause", "SQL 그룹화"]
duplicate_of: ""
source_trust_level: "B"
confidence_score: 0.9
created_at: 2026-07-04
updated_at: 2026-07-04
review_reason: ""
merge_history: []
tags: ["sql", "database", "w3schools", "groupby", "aggregate"]
raw_sources: ["https://www.w3schools.com/sql/sql_groupby.asp"]
applied_in: []
github_commit: ""
---

# [[SQL Group By]]

## 🎯 한 줄 통찰 (One-line insight)
GROUP BY collapses rows sharing the same value into summary rows, and is almost always paired with an aggregate function like COUNT/SUM/AVG to compute a value per group. [S1]

## 🧠 핵심 개념 (Core concepts)
- **GROUP BY statement** — groups rows with the same values into summary rows, e.g. "find the number of customers in each country". [S1]
- **Pairs with aggregate functions** — COUNT(), MAX(), MIN(), SUM(), AVG() compute a single value per group. [S1]
- **Syntax** — `SELECT column1, aggregate_function(column2), column3, ... FROM table_name WHERE condition GROUP BY column1, column3 ORDER BY column_name;`. [S1]
- **GROUP BY with JOIN** — grouping works across joined tables, e.g. counting orders per shipper after a LEFT JOIN. [S1]

## 🧩 추출된 패턴 (Extracted patterns)
- **Group-then-sort-by-aggregate** — combining `GROUP BY` with `ORDER BY COUNT(...) DESC` ranks groups by their aggregate value, a very common "top categories" reporting pattern. [S1]

## 📖 세부 내용 (Details)
- Count customers per country: `SELECT Country, COUNT(CustomerID) AS [Number of Customers] FROM Customers GROUP BY Country;`. [S1]
- Same, sorted by count descending: `... GROUP BY Country ORDER BY COUNT(CustomerID) DESC;`. [S1]
- GROUP BY with a JOIN: `SELECT Shippers.ShipperName, COUNT(Orders.OrderID) AS NumberOfOrders FROM Orders LEFT JOIN Shippers ON Orders.ShipperID = Shippers.ShipperID GROUP BY ShipperName;`. [S1]

## ⚖️ 모순 및 업데이트 (Contradictions & updates)
소스에서 모순되는 정보는 발견되지 않음.

## 🛠️ 적용 사례 (Applied in summary)
현재 발견된 실제 적용 사례가 없습니다 — 다음 챕터인 HAVING이 GROUP BY 결과 자체를 필터링하는 방법을 확장한다. [S1]

## 💻 코드 패턴 (Code patterns)
Count rows per group, sorted by count (SQL):
```sql
SELECT Country, COUNT(CustomerID) AS [Number of Customers]
FROM Customers
GROUP BY Country
ORDER BY COUNT(CustomerID) DESC;
```

## ✅ 검증 상태 및 신뢰도
- **상태:** draft
- **검증 단계:** conceptual
- **출처 신뢰도:** B (W3Schools — widely used educational reference, not a primary standards body)
- **신뢰 점수:** 0.90
- **중복 검사 결과:** 신규 생성 (New discovery)

## 🔗 지식 그래프 (Knowledge Graph)
- **상위/루트:** [[SQL Tutorial]]
- **관련 개념:** [[SQL Having]], [[SQL Aggregate Functions]], [[SQL Count]], [[SQL Order By]]
- **참조 맥락:** 집계 리포트(카테고리별 집계, 랭킹) 작성의 핵심 문법 — HAVING과 함께 이해해야 완전해진다.

## 📚 출처 (Sources)
- [S1] W3Schools — SQL GROUP BY Statement — https://www.w3schools.com/sql/sql_groupby.asp

## 📝 변경 이력 (Change history)
- 2026-07-04: Initial draft synthesized from the W3Schools "SQL GROUP BY Statement" page (Astra wiki-curation, P-Reinforce v3.1 format).
