πŸ˜—
SQL Guide
  • πŸ˜€SQL μ „λ¬Έκ°€ κ°€μ΄λ“œμ˜ κ°€μ΄λ“œ
  • 😦과λͺ©1 데이터λͺ¨λΈμ˜ 이해
    • ⭐제1μž₯ 데이터 λͺ¨λΈλ§μ˜ 이해
      • 🌠1-1-1. 데이터 λͺ¨λΈμ˜ 이해
      • 🌠1-1-2. μ—”ν„°ν‹°(Entity)
      • 🌠1-1-3. 속성(Attribute)
      • 🌠1-1-4. 관계(Relationship)
      • 🌠1-1-5. μ‹λ³„μž
    • ⭐제2μž₯ 데이터 λͺ¨λΈκ³Ό SQL
      • 🌠1-2-1. μ •κ·œν™”
      • 🌠1-2-2. 관계와 쑰인의 이해
      • 🌠1-2-3. λͺ¨λΈμ΄ ν‘œν˜„ν•˜λŠ” νŠΈλžœμž­μ…˜μ˜ 이해
      • 🌠1-2-4. Null μ†μ„±μ˜ 이해
      • 🌠1-2-5. λ³Έμ§ˆμ‹λ³„μž vs. μΈμ‘°μ‹λ³„μž
  • 😧과λͺ©2. SQL κΈ°λ³Έκ³Ό ν™œμš©
    • ⭐제1μž₯ SQL κΈ°λ³Έ
      • 🌠2-1-1. κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€ κ°œμš”
      • 🌠2-1-2. SELECTλ¬Έ
      • 🌠2-1-3. ν•¨μˆ˜(FUNCTION)
      • 🌠2-1-4. WHERE 절
      • 🌠2-1-5. GROUP BY, HAVING 절
      • 🌠2-1-6. ORDER BY 절
      • 🌠2-1-7. 쑰인
      • 🌠2-1-8. ν‘œμ€€ 쑰인
    • ⭐제2μž₯ SQL ν™œμš©
      • 🌠2-2-1. μ„œλΈŒ 쿼리
      • 🌠2-2-2. μ§‘ν•© μ—°μ‚°μž
      • 🌠2-2-3. κ·Έλ£Ή ν•¨μˆ˜
      • 🌠2-2-4. μœˆλ„μš° ν•¨μˆ˜
      • 🌠2-2-5. Top N 쿼리
      • 🌠2-2-6. κ³„μΈ΅ν˜• μ§ˆμ˜μ™€ μ…€ν”„ 쑰인
      • 🌠2-2-7. PIVOT 절과 UNPIVOT 절
      • 🌠2-2-8. μ •κ·œ ν‘œν˜„μ‹
    • ⭐제3μž₯ 관리 ꡬ문
      • 🌠2-3-1. DML
      • 🌠2-3-2. TCL
      • 🌠2-3-3. DDL
      • 🌠2-3-4. DCL
  • 😨과λͺ©3. SQL κ³ κΈ‰ ν™œμš© 및 νŠœλ‹
    • ⭐제1μž₯ SQL μˆ˜ν–‰ ꡬ쑰
      • 🌠3-1-1. λ°μ΄ν„°λ² μ΄μŠ€ μ•„ν‚€ν…μ²˜
      • 🌠3-1-2. SQL 처리 κ³Όμ •
      • 🌠3-1-3. λ°μ΄ν„°λ² μ΄μŠ€ I/O λ©”μ»€λ‹ˆμ¦˜
    • ⭐제2μž₯ SQL 뢄석 도ꡬ
      • 🌠3-2-1. μ˜ˆμƒ μ‹€ν–‰κ³„νš
      • 🌠3-2-2. SQL 트레이슀
      • 🌠3-2-3. 응닡 μ‹œκ°„ 뢄석
    • ⭐제3μž₯ 인덱슀 νŠœλ‹
      • 🌠3-3-1. 인덱슀 κΈ°λ³Έ 원리
      • 🌠3-3-2. ν…Œμ΄λΈ” μ•‘μ„ΈμŠ€ μ΅œμ†Œν™”
      • 🌠3-3-3. 인덱슀 μŠ€μΊ” νš¨μœ¨ν™”
      • 🌠3-3-4. 인덱슀 섀계
    • ⭐제4μž₯ 쑰인 νŠœλ‹
      • 🌠3-4-1. NL 쑰인
      • 🌠3-4-2. μ†ŒνŠΈ λ¨Έμ§€ 쑰인
      • 🌠3-4-3. ν•΄μ‹œ 쑰인
      • 🌠3-4-4. 슀칼라 μ„œλΈŒμΏΌλ¦¬
      • 🌠3-4-5. κ³ κΈ‰ 쑰인 기법
    • ⭐제5μž₯ SQL μ˜΅ν‹°λ§ˆμ΄μ €
      • 🌠3-5-1. SQL μ˜΅ν‹°λ§ˆμ΄μ§• 원리
      • 🌠3-5-2. SQL 곡유 및 μž¬μ‚¬μš©
      • 🌠3-5-3. 쿼리 λ³€ν™˜
    • ⭐제6μž₯ κ³ κΈ‰ SQL νŠœλ‹
      • 🌠3-6-1. μ†ŒνŠΈ νŠœλ‹
      • 🌠3-6-2. DML νŠœλ‹
      • 🌠3-6-3. λ°μ΄ν„°λ² μ΄μŠ€ Call μ΅œμ†Œν™”
      • 🌠3-6-4. νŒŒν‹°μ…”λ‹
      • 🌠3-6-5. λŒ€μš©λŸ‰ 배치 ν”„λ‘œκ·Έλž¨ νŠœλ‹
      • 🌠3-6-6. κ³ κΈ‰ SQL ν™œμš©
    • ⭐제7μž₯ Lockκ³Ό νŠΈλžœμž­μ…˜ λ™μ‹œμ„± μ œμ–΄
      • 🌠3-7-1. Lock
      • 🌠3-7-2. νŠΈλžœμž­μ…˜
      • 🌠3-7-3. λ™μ‹œμ„± μ œμ–΄
Powered by GitBook
On this page
  • κ³Όλͺ©2. SQL κΈ°λ³Έκ³Ό ν™œμš©
  • 제1μž₯ SQL κΈ°λ³Έ
  • 제6절 ORDER BY 절
  • 1. ORDER BY μ •λ ¬
  • 2. SELECT λ¬Έμž₯ μ‹€ν–‰ μˆœμ„œ

Was this helpful?

  1. κ³Όλͺ©2. SQL κΈ°λ³Έκ³Ό ν™œμš©
  2. 제1μž₯ SQL κΈ°λ³Έ

2-1-6. ORDER BY 절

κ³Όλͺ©2. SQL κΈ°λ³Έκ³Ό ν™œμš©

제1μž₯ SQL κΈ°λ³Έ

제6절 ORDER BY 절

1. ORDER BY μ •λ ¬

ORDER BY μ ˆμ€ SQL λ¬Έμž₯으둜 쑰회된 데이터듀을 λ‹€μ–‘ν•œ λͺ©μ μ— 맞게 νŠΉμ • μΉΌλŸΌμ„ κΈ°μ€€μœΌλ‘œ μ •λ ¬ν•˜μ—¬ 좜λ ₯ν•˜λŠ”λ° μ‚¬μš©ν•œλ‹€. ORDER BY μ ˆμ— 칼럼(Column)λͺ… λŒ€μ‹ μ— SELECT μ ˆμ—μ„œ μ‚¬μš©ν•œ ALIAS λͺ…μ΄λ‚˜ 칼럼 μˆœμ„œλ₯Ό λ‚˜νƒ€λ‚΄λŠ” μ •μˆ˜λ„ μ‚¬μš© κ°€λŠ₯ν•˜λ‹€. 그리고 λ³„λ„λ‘œ μ •λ ¬ 방식을 μ§€μ •ν•˜μ§€ μ•ŠμœΌλ©΄ 기본적으둜 μ˜€λ¦„μ°¨μˆœμ΄ 적용되며, SQL λ¬Έμž₯의 제일 λ§ˆμ§€λ§‰μ— μœ„μΉ˜ν•œλ‹€.

SELECT 칼럼λͺ… [ALIASλͺ…]
 FROM ν…Œμ΄λΈ”λͺ…
[WHERE 쑰건식]
[GROUP BY 칼럼(Column)μ΄λ‚˜ ν‘œν˜„μ‹]
[HAVING 그룹쑰건식]
[ORDER BY 칼럼(Column)μ΄λ‚˜ ν‘œν˜„μ‹[ASC λ˜λŠ” DESC]] ;

ODER BY μ ˆμ—λŠ” 2κ°€μ§€μ˜ μ •λ ¬ 방식이 μžˆλ‹€.

  • ASC(Ascending) : μ‘°νšŒν•œ 데이터λ₯Ό μ˜€λ¦„μ°¨μˆœμœΌλ‘œ μ •λ ¬ν•œλ‹€(κΈ°λ³Έ κ°’μ΄λ―€λ‘œ μƒλž΅ κ°€λŠ₯).

  • DESC(Descending) : μ‘°νšŒν•œ 데이터λ₯Ό λ‚΄λ¦Όμ°¨μˆœμœΌλ‘œ μ •λ ¬ν•œλ‹€.

[예제] ORDER BY 절의 예둜 μ„ μˆ˜ ν…Œμ΄λΈ”μ—μ„œ μ„ μˆ˜λ“€μ˜ 이름, ν¬μ§€μ…˜, λ°±λ„˜λ²„λ₯Ό 좜λ ₯ν•˜λŠ”λ° μ‚¬λžŒ 이름을 λ‚΄λ¦Όμ°¨μˆœμœΌλ‘œ μ •λ ¬ν•˜μ—¬ 좜λ ₯ν•œλ‹€.

[예제]

SELECT PLAYER_NAME μ„ μˆ˜λͺ…
    , POSITION  ν¬μ§€μ…˜
    , BACK_NO   λ°±λ„˜λ²„
 FROM PLAYER
ORDER BY PLAYER_NAME DESC; 

[μ‹€ν–‰ κ²°κ³Ό]

μ„ μˆ˜λͺ…
ν¬μ§€μ…˜
λ°±λ„˜λ²„

히카λ₯΄λ„

MF

10

ν™©μ² λ―Ό

MF

35

황연석

FW

16

ν™©μŠΉμ£Ό

DF

98

ν™μ’…ν•˜

MF

32

홍인기

DF

35

ν™μ„±μš”

DF

28

ν™λ³΅ν‘œ

FW

19

홍λͺ…보

DF

20

ν™λ„ν‘œ

MF

9

홍광철

DF

4

호제리였

DF

3

:

:

:

480 개의 행이 μ„ νƒλ˜μ—ˆμŠ΅λ‹ˆλ‹€.

[예제] ORDER BY 절의 예둜 μ„ μˆ˜ ν…Œμ΄λΈ”μ—μ„œ μ„ μˆ˜λ“€μ˜ 이름, ν¬μ§€μ…˜, λ°±λ„˜λ²„λ₯Ό 좜λ ₯ν•˜λŠ”λ° μ„ μˆ˜λ“€μ˜ ν¬μ§€μ…˜ λ‚΄λ¦Όμ°¨μˆœμœΌλ‘œ 좜λ ₯ν•œλ‹€. 칼럼λͺ…이 μ•„λ‹Œ ALIASλ₯Ό μ΄μš©ν•œλ‹€.

[예제]

SELECT PLAYER_NAME μ„ μˆ˜λͺ…
    , POSITION  ν¬μ§€μ…˜
    , BACK_NO   λ°±λ„˜λ²„
 FROM PLAYER
ORDER BY ν¬μ§€μ…˜ DESC; 

[μ‹€ν–‰ κ²°κ³Ό] Oracle

μ„ μˆ˜λͺ…
ν¬μ§€μ…˜
λ°±λ„˜λ²„
ν‚€

μ •ν•™λ²”

173

차상광

186

μ•ˆμ΅μˆ˜

174

백영철

MF

22

173

μ‘°νƒœμš©

MF

7

192

올리베

MF

29

190

김리넀

MF

26

188

쟈슀민

MF

33

186

:

:

:

480 개의 행이 μ„ νƒλ˜μ—ˆμŠ΅λ‹ˆλ‹€.

μ‹€ν–‰ κ²°κ³Όμ—μ„œ ν¬μ§€μ…˜μ— 아무 것도 μ—†λŠ” 값듀이 μžˆλ‹€. ν˜„μž¬ μ„ μˆ˜ ν…Œμ΄λΈ”μ—μ„œ ν¬μ§€μ…˜ μΉΌλŸΌμ— NULL이 λ“€μ–΄ μžˆλŠ”λ° ν¬μ§€μ…˜μ˜ λ‚΄λ¦Όμ°¨μˆœμ—μ„œ NULL 값이 μ•žμ— 좜λ ₯λ˜μ—ˆλ‹€λŠ” 것은 Oracle이 NULL 값을 κ°€μž₯ 큰 κ°’μœΌλ‘œ μ·¨κΈ‰ν–ˆλ‹€λŠ” 것을 μ•Œ 수 μžˆλ‹€. 반면 SQL ServerλŠ” λ°˜λŒ€μ˜ μ •λ ¬ μˆœμ„œλ₯Ό κ°€μ§„λ‹€. ORDER BY 절 μ‚¬μš© νŠΉμ§•μ€ μ•„λž˜μ™€ κ°™λ‹€.

  • 기본적인 μ •λ ¬ μˆœμ„œλŠ” μ˜€λ¦„μ°¨μˆœ(ASC)이닀.

  • μˆ«μžν˜• 데이터 νƒ€μž…μ€ μ˜€λ¦„μ°¨μˆœμœΌλ‘œ μ •λ ¬ν–ˆμ„ κ²½μš°μ— κ°€μž₯ μž‘μ€ κ°’λΆ€ν„° 좜λ ₯λœλ‹€.

  • λ‚ μ§œν˜• 데이터 νƒ€μž…μ€ μ˜€λ¦„μ°¨μˆœμœΌλ‘œ μ •λ ¬ν–ˆμ„ 경우 λ‚ μ§œ 값이 κ°€μž₯ λΉ λ₯Έ 값이 λ¨Όμ € 좜λ ₯λœλ‹€. 예λ₯Ό λ“€μ–΄ '01-JAN-2012'λŠ” '01-SEP-2012'보닀 λ¨Όμ € 좜λ ₯λœλ‹€.

  • Oracleμ—μ„œλŠ” NULL 값을 κ°€μž₯ 큰 κ°’μœΌλ‘œ κ°„μ£Όν•˜μ—¬ μ˜€λ¦„μ°¨μˆœμœΌλ‘œ μ •λ ¬ν–ˆμ„ κ²½μš°μ—λŠ” κ°€μž₯ λ§ˆμ§€λ§‰μ—, λ‚΄λ¦Όμ°¨μˆœμœΌλ‘œ μ •λ ¬ν–ˆμ„ κ²½μš°μ—λŠ” κ°€μž₯ λ¨Όμ € μœ„μΉ˜ν•œλ‹€.

  • 반면, SQL Serverμ—μ„œλŠ” NULL 값을 κ°€μž₯ μž‘μ€ κ°’μœΌλ‘œ κ°„μ£Όν•˜μ—¬ μ˜€λ¦„μ°¨μˆœμœΌλ‘œ μ •λ ¬ν–ˆμ„ κ²½μš°μ—λŠ” κ°€μž₯ λ¨Όμ €, λ‚΄λ¦Όμ°¨μˆœμœΌλ‘œ μ •λ ¬ν–ˆμ„ κ²½μš°μ—λŠ” κ°€μž₯ λ§ˆμ§€λ§‰μ— μœ„μΉ˜ν•œλ‹€.

[예제] ν•œ 개의 칼럼이 μ•„λ‹Œ μ—¬λŸ¬ κ°€μ§€ 칼럼(Column)을 κΈ°μ€€μœΌλ‘œ μ •λ ¬ν•΄λ³Έλ‹€. λ¨Όμ € ν‚€κ°€ 큰 μˆœμ„œλŒ€λ‘œ, ν‚€κ°€ 같은 경우 λ°±λ„˜λ²„ 순으둜 ORDER BY μ ˆμ„ μ μš©ν•˜μ—¬ SQL λ¬Έμž₯을 μž‘μ„±ν•˜λŠ”λ°, ν‚€κ°€ NULL인 λ°μ΄ν„°λŠ” μ œμ™Έν•œλ‹€.

[예제]

SELECT PLAYER_NAME μ„ μˆ˜μ΄λ¦„
    , POSITION  ν¬μ§€μ…˜
    , BACK_NO   λ°±λ„˜λ²„
    , HEIGHT    ν‚€
 FROM PLAYER
WHERE HEIGHT IS NOT NULL
ORDER BY HEIGHT DESC, BACK_NO; 

[μ‹€ν–‰ κ²°κ³Ό]

μ„ μˆ˜λͺ…
ν¬μ§€μ…˜
λ°±λ„˜λ²„
ν‚€

μ„œλ™λͺ…

GK

21

196

κΆŒμ •ν˜

GK

1

195

김석

FW

20

194

정경두

GK

41

194

μ΄ν˜„

GK

1

192

황연석

FW

16

192

미트둜

FW

19

192

κΉ€λŒ€ν¬

GK

31

192

μ‘°μ˜μ†

GK

44

192

κΉ€μ°½λ―Ό

GK

1

191

μš°μ„±μš©

FW

22

191

μ΅œλ™μ„

GK

1

190

샀샀

FW

10

190

13 개의 행이 μ„ νƒλ˜μ—ˆμŠ΅λ‹ˆλ‹€.

μ‹€ν–‰ κ²°κ³Όλ₯Ό 보면 ν‚€κ°€ 192cm인 μ„ μˆ˜κ°€ 5λͺ… μžˆλŠ”λ°, ORDER BY μ ˆμ—μ„œ ν‚€κ°€ 큰 μˆœμ„œλŒ€λ‘œ 좜λ ₯ν•˜κ³ , ν‚€κ°€ κ°™μœΌλ©΄ λ°±λ„˜λ²„ 순으둜 μ •λ ¬ν•˜λΌλŠ” 쑰건에 λ”°λΌμ„œ λ°±λ„˜λ²„ 순으둜 μ •λ ¬λ˜μ–΄ μžˆλŠ” 것을 확인할 수 μžˆλ‹€. 칼럼λͺ…μ΄λ‚˜ ALIAS λͺ…을 λŒ€μ‹ ν•΄μ„œ SELECT 절의 칼럼 μˆœμ„œλ₯Ό μ •μˆ˜λ‘œ λ§€ν•‘ν•˜μ—¬ μ‚¬μš©ν•  μˆ˜λ„ μžˆλ‹€. SELECT 절의 칼럼λͺ…이 κΈΈκ±°λ‚˜ μ •λ ¬ 쑰건이 λ§Žμ„ 경우 νŽΈλ¦¬ν•˜κ²Œ μ‚¬μš©ν•  수 μžˆμœΌλ‚˜ ν–₯ν›„ μœ μ§€λ³΄μˆ˜μ„±μ΄λ‚˜ 가독성이 λ–¨μ–΄μ§€λ―€λ‘œ κ°€λŠ₯ν•œ 칼럼λͺ…μ΄λ‚˜ ALIAS λͺ…을 κΆŒκ³ ν•œλ‹€. ORDER BY μ ˆμ—μ„œ 칼럼λͺ…, ALIASλͺ…, 칼럼 μˆœμ„œλ₯Ό 같이 ν˜Όμš©ν•˜λŠ” 것도 κ°€λŠ₯ν•˜λ‹€.

[예제] ORDER BY 절의 예둜 μ„ μˆ˜ ν…Œμ΄λΈ”μ—μ„œ μ„ μˆ˜λ“€μ˜ 이름, ν¬μ§€μ…˜, λ°±λ„˜λ²„λ₯Ό 좜λ ₯ν•˜λŠ”λ° μ„ μˆ˜λ“€μ˜ λ°±λ„˜λ²„ λ‚΄λ¦Όμ°¨μˆœ, λ°±λ„˜λ²„κ°€ 같은 경우 ν¬μ§€μ…˜, ν¬μ§€μ…˜κΉŒμ§€ 같은 경우 μ„ μˆ˜λͺ… μˆœμ„œλ‘œ 좜λ ₯ν•œλ‹€. BACK_NOκ°€ NULL인 κ²½μš°λŠ” μ œμ™Έν•˜κ³ , 칼럼λͺ…μ΄λ‚˜ ALIASκ°€ μ•„λ‹Œ 칼럼 μˆœμ„œλ₯Ό λ§€ν•‘ν•˜μ—¬ μ‚¬μš©ν•œλ‹€.

[예제]

SELECT PLAYER_NAME μ„ μˆ˜λͺ…
    , POSITION  ν¬μ§€μ…˜
    , BACK_NO   λ°±λ„˜λ²„
 FROM PLAYER
WHERE BACK_NO IS NOT NULL
ORDER BY 3 DESC, 2, 1; 

[μ‹€ν–‰ κ²°κ³Ό]

μ„ μˆ˜λͺ…
ν¬μ§€μ…˜
λ°±λ„˜λ²„

λšœλ”°

FW

99

μΏ ν‚€

FW

99

ν™©μŠΉμ£Ό

DF

98

λ¬΄μŠ€νƒ€νŒŒ

MF

77

닀보

FW

63

λ‹€μ˜€

DF

61

κΉ€μΆ©ν˜Έ

GK

60

μ΅œλ™μš°

GK

60

졜주호

GK

51

μ•ˆλ™μ›

DF

49

μ˜€μž¬μ§„

DF

49

:

:

:

12 개의 행이 μ„ νƒλ˜μ—ˆμŠ΅λ‹ˆλ‹€.

[예제] DEPT ν…Œμ΄λΈ” 정보λ₯Ό λΆ€μ„œλͺ…, μ§€μ—­, λΆ€μ„œλ²ˆν˜Έ λ‚΄λ¦Όμ°¨μˆœμœΌλ‘œ μ •λ ¬ν•΄μ„œ 좜λ ₯ν•œλ‹€. μ•„λž˜μ˜ SQL λ¬Έμž₯은 좜λ ₯λ˜λŠ” 칼럼 λ ˆμ΄λΈ”μ€ λ‹€λ₯Ό 수 μžˆμ§€λ§Œ κ²°κ³ΌλŠ” λͺ¨λ‘ κ°™λ‹€.

Case1. 칼럼λͺ… μ‚¬μš© ORDER BY 절 μ‚¬μš©

[예제]

SELECT DNAME, LOC, DEPTNO
 FROM DEPT
ORDER BY DNAME, LOC, DEPTNO DESC; 

[μ‹€ν–‰ κ²°κ³Ό]

DNAME
LOC
DEPTNO

ACCOUNTING

NEWYORK

10

OPERATIONS

BOSTON

40

RESEARCH

DALLAS

20

SALES

CHICAGO

30

4 개의 행이 μ„ νƒλ˜μ—ˆμŠ΅λ‹ˆλ‹€.

Case2. 칼럼λͺ… + ALIAS λͺ… μ‚¬μš© ORDER BY 절 μ‚¬μš©

[예제]

SELECT DNAME DEPT, LOC AREA, DEPTNO
 FROM DEPT
ORDER BY DNAME, AREA, DEPTNO DESC; 

[μ‹€ν–‰ κ²°κ³Ό]

DEPT
AREA
DEPTNO

ACCOUNTING

NEWYORK

10

OPERATIONS

BOSTON

40

RESEARCH

DALLAS

20

SALES

CHICAGO

30

4 개의 행이 μ„ νƒλ˜μ—ˆμŠ΅λ‹ˆλ‹€.

Case3. 칼럼 μˆœμ„œλ²ˆν˜Έ + ALIAS λͺ… μ‚¬μš© ORDER BY 절 μ‚¬μš©

[예제]

SELECT DNAME
    , LOC AREA
    , DEPTNO
 FROM DEPT
ORDER BY 1
         , AREA
         , 3 DESC; 

[μ‹€ν–‰ κ²°κ³Ό]

DNAME
AREA
DEPTNO

ACCOUNTING

NEWYORK

10

OPERATIONS

BOSTON

40

RESEARCH

DALLAS

20

SALES

CHICAGO

30

4 개의 행이 μ„ νƒλ˜μ—ˆμŠ΅λ‹ˆλ‹€.

2. SELECT λ¬Έμž₯ μ‹€ν–‰ μˆœμ„œ

GROUP BY 절과 ORDER BYκ°€ 같이 μ‚¬μš©λ  λ•Œ SELECT λ¬Έμž₯은 6개의 절둜 ꡬ성이 되고, SELECT λ¬Έμž₯의 μˆ˜ν–‰ λ‹¨κ³„λŠ” μ•„λž˜μ™€ κ°™λ‹€.

β‘€ - SELECT 칼럼λͺ…[ALIASλͺ…]
β‘  - FROM ν…Œμ΄λΈ”λͺ…
β‘‘ - WHERE 쑰건식
β‘’ - GROUP BY 칼럼(Column) μ΄λ‚˜ν‘œν˜„μ‹
β‘£ - HAVING 그룹쑰건식
β‘₯ - ORDER BY 칼럼(Column) μ΄λ‚˜ν‘œν˜„μ‹;
  • β‘  발췌 λŒ€μƒ ν…Œμ΄λΈ”μ„ μ°Έμ‘°ν•œλ‹€. (FROM)

  • β‘‘ 발췌 λŒ€μƒ 데이터가 μ•„λ‹Œ 것은 μ œκ±°ν•œλ‹€. (WHERE)

  • β‘’ 행듀을 μ†Œκ·Έλ£Ήν™” ν•œλ‹€. (GROUP BY)

  • β‘£ κ·Έλ£Ήν•‘λœ κ°’μ˜ 쑰건에 λ§žλŠ” κ²ƒλ§Œμ„ 좜λ ₯ν•œλ‹€. (HAVING)

  • β‘€ 데이터 값을 좜λ ₯/κ³„μ‚°ν•œλ‹€. (SELECT)

  • β‘₯ 데이터λ₯Ό μ •λ ¬ν•œλ‹€. (ORDER BY)

μœ„ μˆœμ„œλŠ” μ˜΅ν‹°λ§ˆμ΄μ €κ°€ SQL λ¬Έμž₯의 SYNTAX, SEMANTIC μ—λŸ¬λ₯Ό μ κ²€ν•˜λŠ” μˆœμ„œμ΄κΈ°λ„ ν•˜λ‹€. 예λ₯Ό λ“€λ©΄ FROM μ ˆμ— μ •μ˜λ˜μ§€ μ•Šμ€ ν…Œμ΄λΈ”μ˜ μΉΌλŸΌμ„ WHERE 절, GROUP BY 절, HAVING 절, SELECT 절, ORDER BY μ ˆμ—μ„œ μ‚¬μš©ν•˜λ©΄ μ—λŸ¬κ°€ λ°œμƒν•œλ‹€. κ·ΈλŸ¬λ‚˜ ORDER BY μ ˆμ—λŠ” SELECT λͺ©λ‘μ— λ‚˜νƒ€λ‚˜μ§€ μ•Šμ€ λ¬Έμžν˜• ν•­λͺ©μ΄ 포함될 수 μžˆλ‹€. 단, SELECT DISTINCTλ₯Ό μ§€μ •ν•˜κ±°λ‚˜ SQL λ¬Έμž₯에 GROUP BY 절이 μžˆκ±°λ‚˜ λ˜λŠ” SELECT 문에 UNION μ—°μ‚°μžκ°€ 있으면 μ—΄ μ •μ˜κ°€ SELECT λͺ©λ‘μ— ν‘œμ‹œλ˜μ–΄μ•Ό ν•œλ‹€. 이 뢀뢄은 κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€κ°€ 데이터λ₯Ό λ©”λͺ¨λ¦¬μ— 올릴 λ•Œ ν–‰ λ‹¨μœ„λ‘œ λͺ¨λ“  μΉΌλŸΌμ„ κ°€μ Έμ˜€κ²Œ λ˜λ―€λ‘œ, SELECT μ ˆμ—μ„œ 일뢀 칼럼만 μ„ νƒν•˜λ”λΌλ„ ORDER BY μ ˆμ—μ„œ λ©”λͺ¨λ¦¬μ— μ˜¬λΌμ™€ μžˆλŠ” λ‹€λ₯Έ 칼럼의 데이터λ₯Ό μ‚¬μš©ν•  수 μžˆλ‹€. SQL λ¬Έμž₯ μ‹€ν–‰ μˆœμ„œλŠ” 였라클 μ˜΅ν‹°λ§ˆμ΄μ €κ°€ SQL λ¬Έμž₯을 ν•΄μ„ν•˜λŠ” 논리적인 μˆœμ„œμ΄λ―€λ‘œ, SQL λ¬Έμž₯이 μ‹€μ œλ‘œ μ‹€ν–‰λ˜λŠ” 물리적인 μˆœμ„œκ°€ μ•„λ‹˜μ„ μœ μ˜ν•˜κΈ° λ°”λž€λ‹€. SQL λ¬Έμž₯이 μ‹€μ œ μˆ˜ν–‰λ˜λŠ” 물리적인 μˆœμ„œλŠ” μ‹€ν–‰κ³„νšμ— μ˜ν•΄ μ •ν•΄μ§„λ‹€.

[예제] SELECT μ ˆμ— μ—†λŠ” EMP μΉΌλŸΌμ„ ORDER BY μ ˆμ— μ‚¬μš©ν•œλ‹€.

[예제]

SELECT EMPNO, ENAME
 FROM EMP
ORDER BY MGR; 

[μ‹€ν–‰ κ²°κ³Ό]

EMPNO
ENAME

7902

FORD

7788

SCOTT

7900

JAMES

7499

ALLEN

7521

WARD

7844

TURNER

7654

MARTIN

7934

MILLER

7876

ADAMS

7698

BLAKE

7566

JONES

7782

CLARK

7369

SMITH

7839

KING

14 개의 행이 μ„ νƒλ˜μ—ˆμŠ΅λ‹ˆλ‹€.

μœ„μ˜ 예제λ₯Ό 톡해 ORDER BY μ ˆμ—μ„œ SELECT μ ˆμ—μ„œ μ •μ˜ν•˜μ§€ μ•Šμ€ μΉΌλŸΌμ„ μ‚¬μš©ν•΄λ„ λ¬Έμ œμ—†μŒμ„ 확인할 수 μžˆλ‹€.

[예제] 인라인 뷰에 μ •μ˜λœ SELECT μΉΌλŸΌμ„ λ©”μΈμΏΌλ¦¬μ—μ„œ μ‚¬μš©ν•œλ‹€.

[예제]

SELECT EMPNO
 FROM (SELECT EMPNO, ENAME
         FROM EMP
        ORDER BY MGR); 

14 개의 행이 μ„ νƒλ˜μ—ˆμŠ΅λ‹ˆλ‹€.

μ‹€ν–‰ κ²°κ³Όμ—μ„œ 2μž₯μ—μ„œ 배울 인라인 뷰의 SELECT μ ˆμ—μ„œ μ •μ˜ν•œ μΉΌλŸΌμ€ λ©”μΈμΏΌλ¦¬μ—μ„œλ„ μ‚¬μš©ν•  수 μžˆλŠ” 것을 확인할 수 μžˆλ‹€.

[예제] 인라인 뷰에 λ―Έμ •μ˜λœ μΉΌλŸΌμ„ λ©”μΈμΏΌλ¦¬μ—μ„œ μ‚¬μš©ν•΄λ³Έλ‹€.

[예제]

SELECT MGR
 FROM (SELECT EMPNO, ENAME
         FROM EMP
        ORDER BY MGR); 
  • ERROR: "MGR": λΆ€μ ν•©ν•œ μ‹λ³„μž

κ·ΈλŸ¬λ‚˜ μ„œλΈŒμΏΌλ¦¬μ˜ SELECT μ ˆμ—μ„œ μ„ νƒλ˜μ§€ μ•Šμ€ μΉΌλŸΌλ“€μ€ 계속 μœ μ§€λ˜λŠ” 것이 μ•„λ‹ˆλΌ μ„œλΈŒμΏΌλ¦¬ λ²”μœ„λ₯Ό λ²—μ–΄λ‚˜λ©΄ 더 이상 μ‚¬μš©ν•  수 μ—†κ²Œ λœλ‹€. (인라인 뷰도 동일함) GROUP BY μ ˆμ—μ„œ κ·Έλ£Ήν•‘ 기쀀을 μ •μ˜ν•˜κ²Œ 되면 λ°μ΄ν„°λ² μ΄μŠ€λŠ” 일반적인 SELECT λ¬Έμž₯처럼 FROM μ ˆμ— μ •μ˜λœ ν…Œμ΄λΈ”μ˜ ꡬ쑰λ₯Ό κ·ΈλŒ€λ‘œ κ°€μ§€κ³  κ°€λŠ” 것이 μ•„λ‹ˆλΌ, GROUP BY 절의 κ·Έλ£Ήν•‘ 기쀀에 μ‚¬μš©λœ 칼럼과 집계 ν•¨μˆ˜μ— μ‚¬μš©λ  수 μžˆλŠ” μˆ«μžν˜• 데이터 μΉΌλŸΌλ“€μ˜ 집합을 μƒˆλ‘œ λ§Œλ“ λ‹€. GROUP BY μ ˆμ„ μ‚¬μš©ν•˜κ²Œ 되면 κ·Έλ£Ήν•‘ 기쀀에 μ‚¬μš©λœ 칼럼과 집계 ν•¨μˆ˜μ— μ‚¬μš©λ  수 μžˆλŠ” μˆ«μžν˜• 데이터 μΉΌλŸΌλ“€μ˜ 집합을 μƒˆλ‘œ λ§Œλ“œλŠ”λ°, κ°œλ³„ λ°μ΄ν„°λŠ” ν•„μš” μ—†μœΌλ―€λ‘œ μ €μž₯ν•˜μ§€ μ•ŠλŠ”λ‹€. GROUP BY 이후 μˆ˜ν–‰ 절인 SELECT μ ˆμ΄λ‚˜ ORDER BY μ ˆμ—μ„œ κ°œλ³„ 데이터λ₯Ό μ‚¬μš©ν•˜λŠ” 경우 μ—λŸ¬κ°€ λ°œμƒν•œλ‹€. 결과적으둜 SELECT μ ˆμ—μ„œλŠ” κ·Έλ£Ήν•‘ κΈ°μ€€κ³Ό 숫자 ν˜•μ‹ 칼럼의 집계 ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•  수 μžˆμ§€λ§Œ, κ·Έλ£Ήν•‘ κΈ°μ€€ μ™Έμ˜ 문자 ν˜•μ‹ μΉΌλŸΌμ€ μ •ν•  수 μ—†λ‹€.

[예제] GROUP BY 절 μ‚¬μš©μ‹œ SELECT μ ˆμ— 일반 μΉΌλŸΌμ„ μ‚¬μš©ν•΄λ³Έλ‹€.

[예제]

SELECT JOB, SAL
 FROM EMP
GROUP BY JOB
HAVING COUNT(*) > 0
ORDER BY SAL; 
  • ERROR: GROUP BY ν‘œν˜„μ‹μ΄ μ•„λ‹™λ‹ˆλ‹€.

[예제] GROUP BY 절 μ‚¬μš©μ‹œ ORDER BY μ ˆμ— 일반 μΉΌλŸΌμ„ μ‚¬μš©ν•΄λ³Έλ‹€.

[예제]

SELECT JOB
 FROM EMP
GROUP BY JOB
HAVING COUNT(*) > 0
ORDER BY SAL; 
  • ERROR: GROUP BY ν‘œν˜„μ‹μ΄ μ•„λ‹™λ‹ˆλ‹€.

[예제] GROUP BY 절 μ‚¬μš©μ‹œ ORDER BY μ ˆμ— 집계 μΉΌλŸΌμ„ μ‚¬μš©ν•΄λ³Έλ‹€.

[예제]

SELECT JOB, SUM(SAL) AS SALARY_SUM
 FROM EMP
GROUP BY JOB
HAVING SUM(SAL) > 5000
ORDER BY SUM(SAL); 

[μ‹€ν–‰ κ²°κ³Ό]

SELECT SQLμ—μ„œ GROUP BY 절이 μ‚¬μš©λ˜μ—ˆκΈ° λ•Œλ¬Έμ— SELECT μ ˆμ— μ •μ˜ν•˜μ§€ μ•Šμ€ MAX, SUM, COUNT 집계 ν•¨μˆ˜λ„ ORDER BY μ ˆμ—μ„œ μ‚¬μš©ν•  수 μžˆλŠ” 것을 μ‹€ν–‰ κ²°κ³Όμ—μ„œ 확인할 수 μžˆλ‹€.

Previous2-1-5. GROUP BY, HAVING 절Next2-1-7. 쑰인

Last updated 3 years ago

Was this helpful?

좜처 : λ°μ΄ν„°μ˜¨μ—μ–΄ – ν•œκ΅­λ°μ΄ν„°μ‚°μ—…μ§„ν₯원()

😧
⭐
🌠
https://dataonair.or.kr