DB/쿼리

μœˆλ„μš°ν•¨μˆ˜

sshhhh 2023. 10. 5.

🍩 μœˆλ„μš°ν•¨μˆ˜

OLAP ν•¨μˆ˜λΌκ³ λ„ ν•œλ‹€.

OLAPλž€, OnLine Analytical Processing의 μ•½μžλ‘œ, λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό μ‚¬μš©ν•œ μ‹€μ‹œκ°„(온라인) 데이터 λΆ„μ„μ²˜λ¦¬

μœˆλ„μš° ν•¨μˆ˜λŠ” 이 OLAP μš©λ„λ‘œ μ‚¬μš©ν•˜κΈ° μœ„ν•΄ ν‘œμ€€ SQL에 μΆ”κ°€λœ κΈ°λŠ₯

 

κ²°κ³Ό μ§‘ν•©μ˜ μ—¬λŸ¬ 행에 λŒ€ν•œ 계산을 μˆ˜ν–‰ν•˜λŠ” 데 μ‚¬μš©

일반적으둜 μ •λ ¬λœ 데이터에 λŒ€ν•΄ μž‘λ™ν•˜λ©°, λ°μ΄ν„°λ² μ΄μŠ€ 질의의 μœˆλ„μš°(λ˜λŠ” μ°½)에 λŒ€ν•΄ 계산을 μˆ˜ν–‰

효율적인 데이터 뢄석 및 집계 μž‘μ—…μ„ μˆ˜ν–‰

 

 


 

  1. ROW_NUMBER(): κ²°κ³Ό μ§‘ν•©μ˜ 각 행에 μˆœμ„œ 번호λ₯Ό ν• λ‹Ήν•©λ‹ˆλ‹€.
    주둜 μ •λ ¬λœ κ²°κ³Όμ—μ„œ νŠΉμ • μˆœμ„œμ˜ 행을 선택할 λ•Œ μ‚¬μš©λ©λ‹ˆλ‹€.
SELECT ROW_NUMBER() OVER(ORDER BY Salary DESC) AS RowNum, EmployeeName, Salary FROM Employees;

μ‹€ν–‰ κ²°κ³Ό:

| RowNum | EmployeeName | Salary |
|--------|--------------|--------|
| 1      | John         | 55000  |
| 2      | Alice        | 50000  |
| 3      | Bob          | 48000  |
| 4      | Eve          | 48000  |
| 5      | Jane         | 45000  |

 

2.NTILE(n): κ²°κ³Ό 집합을 n개의 λ™μΌν•œ 크기의 κ΅¬κ°„μœΌλ‘œ λΆ„ν• ν•˜κ³ , 각 행에 ν•΄λ‹Ήν•˜λŠ” ꡬ간 번호λ₯Ό ν• λ‹Ήν•©λ‹ˆλ‹€.
  주둜 데이터λ₯Ό λ°±λΆ„μœ„μˆ˜λ‘œ λΆ„ν• ν•  λ•Œ μ‚¬μš©λ©λ‹ˆλ‹€.

SELECT NTILE(4) OVER(ORDER BY Age) AS AgeGroup, Name, Age FROM People;

μ‹€ν–‰ κ²°κ³Ό:

| AgeGroup | Name    | Age |
|----------|---------|-----|
| 1        | Emma    | 18  |
| 1        | Olivia  | 18  |
| 2        | Liam    | 22  |
| 2        | Noah    | 22  |
| 3        | Ava     | 30  |
| 4        | Sophia  | 38  |
| 4        | Jackson | 38  |

 

 

3.LEAD()와 LAG(): ν˜„μž¬ 행을 κΈ°μ€€μœΌλ‘œ λ‹€μŒ ν–‰(LEAD()) λ˜λŠ” 이전 ν–‰(LAG())에 μ ‘κ·Όν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  이전 λ˜λŠ” λ‹€μŒ 값을 κ°€μ Έμ˜¬ λ•Œ 유용

SELECT Name, Salary, LAG(Salary) OVER(ORDER BY Salary) AS PreviousSalary FROM Employees;

μ‹€ν–‰ κ²°κ³Ό:

| Name   | Salary | PreviousSalary |
|--------|--------|----------------|
| Jane   | 45000  | null           |
| Bob    | 48000  | 45000          |
| Eve    | 48000  | 48000          |
| Alice  | 50000  | 48000          |
| John   | 55000  | 50000          |

 

4.RANK(), DERANK()

μˆœμœ„λ§€κΈ°λŠ” ν•¨μˆ˜

https://gent.tistory.com/580



5.SUM(), AVG(), MIN(), MAX()

μ§‘κ³„ν•¨μˆ˜.

 

'DB > 쿼리' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

νŒŒν‹°μ…˜  (1) 2023.10.10
STUFF ν•¨μˆ˜  (0) 2023.10.10
WITH 절  (1) 2023.10.05
APPLY  (0) 2023.10.05
MSSQL μ—°μŠ΅  (0) 2023.09.13

λŒ“κΈ€