Skip to content

Commit b87872c

Browse files
civilian7claude
andcommitted
fix: 커리큘럼 감사 — 섹션 분류 제거 + 개념 역전 수정
1. 연습문제 섹션 분류(기초/응용/실전) 전체 제거 (98파일, ko+en) — 일부만 있어 일관성 위배, 문제 번호만으로 충분 2. 개념 역전 수정 (초급에서 미수강 개념 사용): - beginner-02-customers 문제5: OVER() → 서브쿼리로 대체 - beginner-02-customers 문제17: CTE+OVER+LEFT JOIN → 단순 GROUP BY+서브쿼리 - lectures/07-case 문제10: INNER JOIN 4테이블 → 단일 테이블 CASE 3. YAML 원본 + 컴파일 결과 모두 반영 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 361ddff commit b87872c

57 files changed

Lines changed: 69 additions & 1579 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎docs/en/exercises/advanced-01-window-functions.md‎

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,6 @@
1212
!!! abstract "Concepts"
1313
`ROW_NUMBER`, `RANK`, `DENSE_RANK`, `NTILE`, `LAG`, `LEAD`, `SUM/AVG/COUNT OVER`, `FIRST_VALUE`, `LAST_VALUE`, `ROWS BETWEEN`
1414

15-
## Basic (1~5)
16-
1715
Practice the basic syntax of window functions.
1816

1917
---
@@ -252,8 +250,6 @@ Payments completed in 2024 (`status = 'completed'`) are tallied by means, and qu
252250

253251
---
254252

255-
## Applied (6~10)
256-
257253
Utilizes analytical functions such as LAG/LEAD and moving average.
258254

259255
---
@@ -547,8 +543,6 @@ Only products with 3 or more reviews are eligible.
547543

548544
---
549545

550-
## Practical (11~15)
551-
552546
Solve practical analysis scenarios with complex window function combinations.
553547

554548
---

‎docs/en/exercises/advanced-02-cte.md‎

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,6 @@
1212
!!! abstract "Concepts"
1313
`WITH`, Recursive CTE(`WITH RECURSIVE`), Multiple CTE Chaining, CTE + Aggregate/JOIN/Window Function
1414

15-
## Basic (1~5)
16-
1715
Practice single CTE and CTE + JOIN/aggregation.
1816

1917
---
@@ -299,8 +297,6 @@ Calculate sales by category as of 2024 and display cumulative proportions in des
299297

300298
---
301299

302-
## Applied (6~10)
303-
304300
Utilizes recursive CTEs and multiple CTEs.
305301

306302
---
@@ -614,8 +610,6 @@ We chain three CTEs: (1) RFM raw metrics, (2) NTILE scores, and (3) segment labe
614610

615611
---
616612

617-
## Practical (11~15)
618-
619613
We cover advanced patterns such as chaining more than 3 CTEs, leveraging recursion depth, and creating date sequences.
620614

621615
---

‎docs/en/exercises/advanced-03-exists-antipattern.md‎

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,6 @@
1414
!!! abstract "Concepts"
1515
`EXISTS`, `NOT EXISTS`, Correlated subquery, Anti-join pattern, Universal Quantification
1616

17-
## Basic (1~5)
18-
1917
Practice the basic usage of EXISTS and NOT EXISTS.
2018

2119
---
@@ -261,8 +259,6 @@ Identify “blue-chip customers” who consistently purchase without making a cl
261259

262260
---
263261

264-
## Applied (6~10)
265-
266262
Covers complex EXISTS conditions combining correlated subqueries and aggregates.
267263

268264
---
@@ -522,8 +518,6 @@ Combines two EXISTS/NOT EXISTS conditions.
522518

523519
---
524520

525-
## Practical (11~15)
526-
527521
Covers advanced scenarios such as universal qualification, compound NOT EXISTS, and anti-patterns.
528522

529523
---

‎docs/en/exercises/advanced-04-db-objects.md‎

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,6 @@
1414
!!! abstract "Concepts"
1515
`CREATE VIEW`, View query, `DROP VIEW`, `CREATE TRIGGER` (AFTER/BEFORE, INSERT/UPDATE/DELETE, WHEN, OLD/NEW), Audit Logging, Stored procedure concepts (MySQL/PG)
1616

17-
## Views (1~7)
18-
1917
Practice creating, using, and managing views.
2018

2119
---
@@ -773,8 +771,6 @@ Save statistics for each product as a table and implement an update pattern.
773771

774772
---
775773

776-
## Trigger (8~14)
777-
778774
Practice defining, creating, and using triggers.
779775

780776
---
@@ -1188,8 +1184,6 @@ Delete the existing `trg_stock_deduct` trigger and recreate it with an improved
11881184

11891185
---
11901186

1191-
## Stored procedures (15~20)
1192-
11931187
Stored procedures are not supported by SQLite. Provided in MySQL/PostgreSQL syntax.
11941188

11951189
!!! warning "SQLite not supported"

‎docs/en/exercises/advanced-05-json.md‎

Lines changed: 0 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,11 @@ The `specs` column of the products table stores specification information for ea
2121

2222
---
2323

24-
2524
### Problem 1. JSON Basic Extraction — Laptop CPU List
2625

2726
Extract product names and CPU specifications from all active products in the Laptop category.
2827
Products with NULL CPU specifications are excluded.
2928

30-
3129
??? tip "Hint"
3230
- Extract JSON internal values ​​with `json_extract(specs, '$.cpu')`
3331
- Filter categories by JOIN with `categories` table
@@ -50,16 +48,13 @@ Products with NULL CPU specifications are excluded.
5048
| (laptop product name) | Intel Core i7-13700H |
5149
| ... | ... |
5250

53-
5451
---
5552

56-
5753
### Problem 2. JSON Multiple Field Extraction — Notebook Spec Sheet
5854

5955
Create a spec sheet by extracting the screen size, CPU, RAM (GB), storage capacity (GB), and battery (hours) of your laptop product at once.
6056
Sort by price descending.
6157

62-
6358
??? tip "Hint"
6459
- Call `json_extract` multiple times to extract each field into a separate column
6560
- `$.screen_size`, `$.cpu`, `$.ram_gb`, `$.storage_gb`, `$.battery_hours`
@@ -88,16 +83,13 @@ Sort by price descending.
8883
| (laptop name) | 2500000 | 16 inch | Intel Core i9-13900H | 32 | 1024 | 12 |
8984
| ... | ... | ... | ... | ... | ... | ... |
9085

91-
9286
---
9387

94-
9588
### Problem 3. Identifying products with NULL specs
9689

9790
Check the distribution by category of products without specs information (NULL).
9891
The goal is to determine which categories are missing specification information.
9992

100-
10193
??? tip "Hint"
10294
- `WHERE p.specs IS NULL` condition
10395
- Aggregated by `GROUP BY` Category name
@@ -120,16 +112,13 @@ The goal is to determine which categories are missing specification information.
120112
| (peripheral category) | 45 |
121113
| ... | ... |
122114

123-
124115
---
125116

126-
127117
### Problem 4. List JSON keys — utilizing json_each
128118

129119
Pick a laptop product and list all the keys included in the specs JSON.
130120
`json_each` uses table-valued functions.
131121

132-
133122
??? tip "Hint"
134123
- `json_each(specs)` returns each key-value pair in a JSON object as a row
135124
- Return columns: `key`, `value`, `type`
@@ -161,16 +150,13 @@ Pick a laptop product and list all the keys included in the specs JSON.
161150
| storage_gb | 512 | integer |
162151
| battery_hours | 10 | integer |
163152

164-
165153
---
166154

167-
168155
### Problem 5. JSON Condition Filtering — Finding High-Performance Laptops
169156

170157
Look for a laptop with at least 32GB of RAM and at least 1024GB of storage.
171158
Displays product name, price, RAM, and storage capacity.
172159

173-
174160
??? tip "Hint"
175161
- Use JSON value as condition in WHERE clause like `json_extract(specs, '$.ram_gb') >= 32`
176162
- Values ​​extracted from JSON are automatically converted to the appropriate type.
@@ -198,16 +184,13 @@ Displays product name, price, RAM, and storage capacity.
198184
| (high-spec laptop) | 3200000 | 32 | 1024 | Intel Core i9-13900H |
199185
| ... | ... | ... | ... | ... |
200186

201-
202187
---
203188

204-
205189
### Problem 6. JSON-based group aggregation — average price by CPU
206190

207191
Find the average price and number of products by CPU specification for laptops and desktops.
208192
Shows only CPUs with 3 or more products.
209193

210-
211194
??? tip "Hint"
212195
- Use `json_extract(specs, '$.cpu')` for `GROUP BY`
213196
- Exclude minority groups with `HAVING COUNT(*) >= 3`
@@ -236,16 +219,13 @@ Shows only CPUs with 3 or more products.
236219
| AMD Ryzen 9 7950X | 4 | 2500000 | 2000000 | 3000000 |
237220
| ... | ... | ... | ... | ... |
238221

239-
240222
---
241223

242-
243224
### Problem 7. JSON-based statistics — Analysis by monitor panel type
244225

245226
In the monitor category, tally the number of products, average price, and average refresh rate by panel type (IPS/VA/OLED).
246227
Also check the resolution distribution of each panel type.
247228

248-
249229
??? tip "Hint"
250230
- Use `json_extract(specs, '$.panel')`, `json_extract(specs, '$.refresh_rate')`
251231
- Resolution distribution is processed as a separate query or conditional aggregation (`CASE WHEN`)
@@ -275,16 +255,13 @@ Also check the resolution distribution of each panel type.
275255
| IPS | 25 | 450000 | 120 | 8 | 10 | 7 |
276256
| VA | 12 | 380000 | 100 | 5 | 5 | 2 |
277257

278-
279258
---
280259

281-
282260
### Problem 8. Modifying JSON value with json_set (within SELECT)
283261

284262
Use SQLite's `json_set` function to check the result of adding the `"warranty_years": 3` field to the laptop product's specs.
285263
Preview the converted JSON from a SELECT, not an actual UPDATE.
286264

287-
288265
??? tip "Hint"
289266
- `json_set(specs, '$.warranty_years', 3)` adds a new key to an existing JSON
290267
- If the key already exists, the value is overwritten.
@@ -307,16 +284,13 @@ Preview the converted JSON from a SELECT, not an actual UPDATE.
307284
|---|---|---|
308285
| (laptop name) | {"screen_size":"15.6 inch",...} | {"screen_size":"15.6 inch",...,"warranty_years":3} |
309286

310-
311287
---
312288

313-
314289
### Problem 9. Removing a JSON key with json_remove (within a SELECT)
315290

316291
Compare the original with the result of removing the `tdp_watts` key from the GPU product's specs.
317292
Use the `json_remove` function.
318293

319-
320294
??? tip "Hint"
321295
- `json_remove(specs, '$.tdp_watts')` returns JSON with the specified key removed
322296
- Display `specs` and `json_remove(...)` results side by side for comparison with the original
@@ -338,16 +312,13 @@ Use the `json_remove` function.
338312
|---|---|---|
339313
| (GPU name) | {"vram":"16GB","clock_mhz":2100,"tdp_watts":300} | {"vram":"16GB","clock_mhz":2100} |
340314

341-
342315
---
343316

344-
345317
### Problem 10. Comprehensive JSON analysis — Specification comparison report by category
346318

347319
Analyze product specs for all categories to find a list of unique keys included in JSON for each category and the occurrence rate of each key.
348320
This report allows you to see at a glance what specification information exists in which category.
349321

350-
351322
??? tip "Hint"
352323
- Spread all keys into rows with `json_each(specs)`, then GROUP BY with category + key combination
353324
- Appearance rate = Number of products with that key / Total number of products in the category

0 commit comments

Comments
 (0)