λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
IT자격증 곡뢀/SQLD μ˜ˆμƒλ³΅μ›

[SQLD] 2024λ…„ SQLD 54회 κΈ°μΆœλ³΅μ›

by yunamom 2024. 8. 25.
728x90
λ°˜μ‘ν˜•

μ•ˆλ…•ν•˜μ„Έμš” yunamom μž…λ‹ˆλ‹€ :D

2024λ…„ 8μ›” 24일 ν† μš”μΌμ— μΉ˜λ€„μ§„ 제54회 SQLD μ‹œν—˜ 1κ³Όλͺ©, 2κ³Όλͺ© 정닡을 ν¬μŠ€νŒ… ν•˜κ² μŠ΅λ‹ˆλ‹€. πŸ‘©πŸ»‍πŸ’»

 

*문제 μˆœμ„œλŠ” λ‹€λ₯Ό 수 있으며 λ‹΅ 자체λ₯Ό μ μ–΄λ‘κ±°λ‚˜ 문제만 적은 κ²½μš°λ„ μžˆμŠ΅λ‹ˆλ‹€.

(2025λ…„ 7μ›” 9일 μ—…λ°μ΄νŠΈ)


SQLD 54회 1κ³Όλͺ©

β–  문제 1. μ•„λž˜μ˜ μ„€λͺ…μœΌλ‘œ μ•Œλ§žμ€ 것은?

[μ§€λ¬Έ]
μ‹œμŠ€ν…œμœΌλ‘œ κ΅¬μΆ•ν•˜κ³ μž ν•˜λŠ” 업무에 λŒ€ν•΄ Key, 속성, 관계 등을 μ •ν™•ν•˜κ²Œ ν‘œν˜„ν•˜κ³  μž¬μ‚¬μš©μ„±μ΄ 높은 λͺ¨λΈλ§μœΌλ‘œ μ•Œλ§žμ€ 것은?
1) 논리적 데이터 λͺ¨λΈλ§

2) κ°œλ…μ  데이터 λͺ¨λΈλ§

3) 물리적 데이터 λͺ¨λΈλ§

4) λ°μ΄ν„°λ² μ΄μŠ€ λͺ¨λΈλ§

 


β–  문제 2. μ—”ν„°ν‹° νŠΉμ§•μœΌλ‘œ μ μ ˆν•˜μ§€ μ•Šμ€ 것은?

1) μ—”ν„°ν‹°λŠ” κ³ μœ ν•œ μ‹λ³„μžλ₯Ό κ°€μ§„λ‹€.

2) μ—”ν„°ν‹°λŠ” 데이터 μ €μž₯의 κΈ°λ³Έ λ‹¨μœ„μ΄λ‹€.

3) μ—”ν„°ν‹°λŠ” λ°˜λ“œμ‹œ 속성을 κ°€μ§„λ‹€.

4) 속성이 μ—†λŠ” μ—”ν„°ν‹°κ°€ μžˆμ„ 수 μžˆλ‹€.

 


β–  문제 3.  μ†μ„± νŠΉμ§•μœΌλ‘œ μ μ ˆν•˜μ§€ μ•Šμ€ 것은?

1) 속성은 μ—”ν„°ν‹°μ˜ νŠΉμ„±μ„ λ‚˜νƒ€λ‚Έλ‹€.

2) μ†μ„±μ—λŠ” κΈ°λ³Έ 속성과 νŒŒμƒ 속성이 μžˆλ‹€.

3) νŒŒμƒ 속성은 λ‹€λ₯Έ μ†μ„±μ—μ„œ κ³„μ‚°λœλ‹€.

4) νŒŒμƒ 속성은 λ§Žμ„μˆ˜λ‘ μ’‹λ‹€.

 


β–  문제 4.  μ‹λ³„μžμ˜ νŠΉμ§•μœΌλ‘œ μ μ ˆν•˜μ§€ μ•Šμ€ 것은?

1) μ‹λ³„μžλŠ” μ—”ν„°ν‹°μ˜ μœ μΌμ„±μ„ 보μž₯ν•œλ‹€.

2) μ‹λ³„μžλŠ” μ΅œμ†Œμ„± 쑰건을 λ§Œμ‘±ν•΄μ•Ό ν•œλ‹€.

3) μ£Όμ‹λ³„μžλŠ” μ—”ν„°ν‹°λ₯Ό κ³ μœ ν•˜κ²Œ μ‹λ³„ν•œλ‹€.

4) μ£Όμ‹λ³„μžμ˜ 값을 변경될 수 μžˆλ‹€.

 


β–  문제 5.  μ‹λ³„μžκ΄€κ³„μ— λŒ€ν•œ μ„€λͺ…μœΌλ‘œ μ μ ˆν•˜μ§€ μ•Šμ€ 것은?

1) μ‹λ³„μž κ΄€κ³„λŠ” λΆ€λͺ¨ 엔터티와 쒅속적인 관계λ₯Ό λ§ΊλŠ”λ‹€.

2) λΉ„μ‹λ³„μž κ΄€κ³„μ—μ„œ λΆ€λͺ¨μ™€μ˜ κ΄€κ³„λŠ” ν•„μˆ˜ 쑰건이닀.

3) μ‹λ³„μž κ΄€κ³„λŠ” λΆ€λͺ¨μ˜ μ‹λ³„μžλ₯Ό μžμ‹μ—κ²Œ μ „λ‹¬ν•œλ‹€.

4) λΉ„μ‹λ³„μž κ΄€κ³„λŠ” μžμ‹ μ—”ν„°ν‹°κ°€ λ…λ¦½μ μœΌλ‘œ μ‘΄μž¬ν•  수 μžˆλ‹€.

 


β–  문제 6.  μ•„λž˜ 고객, μ£Όλ¬Έ κ΄€λ ¨ ERD 에 λŒ€ν•œ μ„€λͺ…μœΌλ‘œ μ μ ˆν•œ 것은?

- μ£Όλ¬Έμ—μ„œμ˜ κ³ κ°λ²ˆν˜ΈλŠ” 고객 μ—”ν„°ν‹°μ—μ„œ 상속받은 것이닀.


β–  문제 7.  ν•¨μˆ˜ 쒅속성에 λŒ€ν•œ μ„€λͺ…μœΌλ‘œ μ μ ˆν•œ 것은?

- 일반 속성이 μ£Όμ‹λ³„μžμ— λͺ¨λ‘μ— ν•¨μˆ˜μ’…μ†μ„±μ΄ μžˆλŠ” μƒνƒœ : 제2μ •κ·œν˜•

(3) μƒν’ˆλ²ˆν˜Έμ— μƒν’ˆλͺ…이 쒅속 -> μƒν’ˆλͺ…은 μƒν’ˆλ²ˆν˜Έμ— 쒅속 (ν‹€λ¦Ό)


β–  문제 8.  μ•„λž˜μ˜ 경우 μƒμ„±ν•˜λŠ” μ‹λ³„μžλŠ”?

[μ§€λ¬Έ]
μ—…λ¬΄μ μœΌλ‘œ λ§Œλ“€μ–΄μ§€μ§€λŠ” μ•Šμ§€λ§Œ μ›μ‘°μ‹λ³„μžκ°€ λ³΅μž‘ν•œ ꡬ성을 κ°–κ³  있기 λ•Œλ¬Έμ— μΈμœ„μ μœΌλ‘œ λ§Œλ“  μ‹λ³„μž
1) μ™Έλž˜ν‚€

2) 볡합 μ‹λ³„μž

3) 인쑰 μ‹λ³„μž

4) μžμ—° μ‹λ³„μž

 


β–  문제 9. νŠΈλžœμž­μ…˜μ— λŒ€ν•œ μ„€λͺ…μœΌλ‘œ μ μ ˆν•˜μ§€ μ•Šμ€ 것은?

- IE μ‹€μ„ , 바컀 O ν‘œμ‹œλ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠλŠ”κ²ƒμœΌλ‘œ ν‘œν˜„ ( 거꾸둜 됨)


β–  문제 10. Null λŒ€ν•œ μ„€λͺ…μœΌλ‘œ μ μ ˆν•œ 것은?

1) Null μ—λŠ” μ—°μ‚°μžλ₯Ό μ‚¬μš©ν•  수 μ—†λ‹€.

2) 바컀 ν‘œκΈ°λ²•μ—μ„œ Null ν—ˆμš© μ—¬λΆ€λ₯Ό μ•Œ 수 μ—†λ‹€.

3) Null 은 λ―Έμ§€μ˜ κ°’μœΌλ‘œ 비ꡐ가 λΆˆκ°€ν•˜λ‹€.

4) IE ν‘œκΈ°λ²•μ—μ„œ Null ν—ˆμš© μ—¬λΆ€λ₯Ό μ•Œ 수 μžˆλ‹€.

 

 

SQLD 54회 2κ³Όλͺ©β€‹

β–  문제 11. CTAS 에 λŒ€ν•œ μ„€λͺ…μœΌλ‘œ μ μ ˆν•˜μ§€ μ•Šμ€ 것은?

1) λ°μ΄ν„°λ§Œ λ³΅μ‚¬ν•œλ‹€.

2) μ œμ•½μ‘°κ±΄μ΄ λͺ¨λ‘ λ³΅μ‚¬λœλ‹€.

3) κΈ°μ‘΄ ν…Œμ΄λΈ”μ˜ ꡬ쑰λ₯Ό 기반으둜 ν•œλ‹€.

4) 일뢀 μ œμ•½μ‘°κ±΄μ€ λ³„λ„λ‘œ μΆ”κ°€ν•  수 μžˆλ‹€.

 


β–  문제 12. View 에 λŒ€ν•œ μ„€λͺ…μœΌλ‘œ μ μ ˆν•˜μ§€ μ•Šμ€ 것은?

1) View λŠ” 쑰회 속도λ₯Ό 높이기 μœ„ν•΄ μ‚¬μš©λœλ‹€.

2) View λŠ” μ‹€μ œ 데이터λ₯Ό μ €μž₯ν•˜μ§€ μ•ŠλŠ”λ‹€.

3) 컬럼 μΆ”κ°€κ°€ 될 λ•Œ View λ₯Ό λ³€κ²½ν•˜μ§€ μ•Šμ•„λ„ μ‘μš©ν”„λ‘œκ·Έλž¨μ— 영ν–₯을 λ―ΈμΉ˜μ§€ μ•ŠλŠ”λ‹€.

4) View λŠ” λ‹€λ₯Έ ν…Œμ΄λΈ”μ˜ 데이터λ₯Ό μ°Έμ‘°ν•œλ‹€.

 


β–  문제 13. Database 의 논리적 업무 μ΅œμ†Œ λ‹¨μœ„λŠ”?

1) νŠΈλžœμž­μ…˜

2) λ ˆμ½”λ“œ

3) Query

4) ν…Œμ΄λΈ”

 

β€» Query λŠ” νŠΈλžœμž­μ…˜μ„ κ΅¬μ„±ν•˜λŠ” κ°œλ³„ SQL문으둜 '논리적' μ΅œμ†Œ λ‹¨μœ„λ‘œ 보기 μ–΄λ ΅λ‹€.

β€» SQL μ „λ¬Έκ°€ κ°€μ΄λ“œ(P.410) 책에 λΆ„ν•  ν• μˆ˜ μ—†λŠ” μ΅œμ†Œ λ‹¨μœ„λ‘œ νŠΈλžœμž­μ…˜μ„ 지정함. 


β–  문제 14. μ•„λž˜μ˜ μ •κ·œν˜•μ— λŒ€ν•œ 값이 λ‚˜μ˜€μ§€ μ•ŠλŠ” 것은? ( 3,4, - μžˆλŠ” ν˜•νƒœ. λ³΄κΈ°λŠ” μ „ν™”λ²ˆν˜Έ)

1) 

2) 

3) 

4) 

- 02) 둜 μ‹œμž‘ν•˜λŠ” ν˜•νƒœ


β–  문제 15. μ•„λž˜μ˜ κ³„μΈ΅ν˜• 쿼리와 결과에 λŒ€ν•œ μ„€λͺ…μœΌλ‘œ μ μ ˆν•˜μ§€ μ•Šμ€ 것은?

#emp_noλŠ” ν•˜μœ„ 사원 번호, mgr_noλŠ” μƒμœ„ κ΄€λ¦¬μž 번호λ₯Ό λ‚˜νƒ€λƒ„

CONNECT BY Prior emp_no = mgr_no
1) 계측 ꡬ쑰λ₯Ό μ‘°νšŒν•œλ‹€.

2) μƒμœ„ κ΄€λ¦¬μžλΆ€ν„° μ‘°νšŒν•œλ‹€.

3) μ—­λ°©ν–₯ 이닀.

4) 순방ν–₯ 이닀.

 

β€» (Prior emp_no = mgr_no --> 순방ν–₯)


β–  문제 16. μ„œλΈŒμΏΌλ¦¬μ— λŒ€ν•œ μ„€λͺ…μœΌλ‘œ μ μ ˆν•˜μ§€ μ•Šμ€ 것은?

1) 1:M 에 관계일 λ•Œ M 레벨둜 μ§‘κ³„λœλ‹€

2) μ„œλΈŒμΏΌλ¦¬μ˜ μ»¬λŸΌμ€ 메인 μΏΌλ¦¬μ—μ„œ μ‚¬μš©ν•  수 μ—†λ‹€

3) 

4) 

*1번, 2번 λ³΅μˆ˜μ •λ‹΅μœΌλ‘œ μ²˜λ¦¬λ˜μ—ˆμŒ.

>> μ „λ¬Έκ°€ κ°€μ΄λ“œ P.280,

"κ·ΈλŸ¬λ‚˜ μ„œλΈŒ μΏΌλ¦¬λŠ” μ„œλΈŒ 쿼리 λ ˆλ²¨κ³ΌλŠ” 상관없이 항상 메인 쿼리 레벨둜 κ²°κ³Ό 집합이 μƒμ„±λœλ‹€.

예λ₯Ό λ“€μ–΄ 메인 쿼리둜 쑰직(1), μ„œλΈŒ 쿼리둜 사원(M) ν…Œμ΄λΈ”μ„ μ‚¬μš©ν•˜λ©΄ κ²°κ³Ό 집합은 쑰직(1) λ ˆλ²¨μ΄λœλ‹€."

λΌλŠ” λ‚΄μš©μ΄ μžˆλ„€μš”. 책에 μ˜ν•˜λ©΄ 1번이 ν‹€λ¦°κ²Œ λ˜λŠ”λ°, 2λ²ˆλ„ ν‹€λ ΈμŠ΅λ‹ˆλ‹€.

 

μ„œλΈŒμΏΌλ¦¬λŠ” Inline View λ₯Ό κ°€μ§€λ―€λ‘œ 2λ²ˆλ„ ν‹€λ¦°κ²Œ λ˜λŠ”λ°... 1λ²ˆμ€ M λ ˆλ²¨λ‘œλ„ 집계가 κ°€λŠ₯ν•©λ‹ˆλ‹€.

λ§ˆμ°¬κ°€μ§€λ‘œ Inline View κ°€ μ‚¬μš©λ˜μ–΄ 쑰인이 되면 1:M 이 되면 M 레벨이 될 μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.


β–  문제 17. μ•„λž˜ SQL 에 λŒ€ν•œ 결과와 같은 것은?

1) 

2) 

3) 

4) 

<SQL>

... case when col1 = 'X' then null else col1

-> 값이 맞으면 null 을 λ„μΆœν•˜λŠ” ν•¨μˆ˜

- nullif (col1,'x')


β–  문제 18. SQL 의 κ²°κ³Όκ°€ λ‹€λ₯Έ 것은? (Oralce 에 ν•œν•¨)

COL1   COL2    COL3
--------------------
1       2       A
2       3       B
3       2       C
4       3       D
1) SELECT COL1,COL2,COL3 FROM TAB WHERE COL1 < 5

2) SELECT T. * FROM TAB AS T

3) SELECT * FROM TAB

4) SELECT * FROM TAB WHERE COL2 IN (2,3)

 

β€» μ •λ‹΅: 2번 ( SQL λͺ…령이 μ˜¬λ°”λ₯΄κ²Œ λλ‚˜μ§€ μ•Šμ€ ORA-00933 μ—λŸ¬), (SELECT T. * FROM TAB T) 라고 μž‘μ„±ν•΄μ•Ό λ™μΌν•œ κ²°κ³Όκ°€ λ‚˜μ˜¨λ‹€.

β€» (μ˜€λΌν΄μ—μ„œλŠ” FROMμ ˆμ— 'AS' ν‚€μ›Œλ“œ μ‚¬μš© λΆˆκ°€) *PostgreSQL μ—μ„œλŠ” μ‚¬μš© κ°€λŠ₯함


β–  문제 19. μ•„λž˜μ˜ μ„€λͺ…을 SQL 둜 μž‘μ„±ν•œ 것쀑 μ μ ˆν•˜μ§€ μ•Šμ€ 것은?

<μ§€λ¬Έ>
STADIUM κ΄€λ ¨ μ„€λͺ…
- SELECT ... , STADIUM .. -> STADIUM 은 λ‘κ°œ ν…Œμ΄λΈ”μ΄ μ‘΄μž¬ν•˜λ―€λ‘œ ν…Œμ΄λΈ”λͺ… ν‘œμ‹œκ°€ ν•„μš”ν•¨
1) 

2) 

3) 

4) 

β–  문제 20. μ•„λž˜ SQL 에 λŒ€ν•œ 결과둜 μ•Œλ§žμ€ 것은? 

<SQL>
SELECT ... , COALESCE (A, 50*B, '50')
1) Bκ°€ Null이 μ•„λ‹ˆλ©΄ 항상 B값을 λ°˜ν™˜ν•œλ‹€.

2) A와 Bκ°€ Null일 경우 100을 λ°˜ν™˜ν•œλ‹€.

3) Aκ°€ Null일 κ²½μš°μ—λŠ” μ–Έμ œλ‚˜ 50*B λ₯Ό λ°˜ν™˜ν•œλ‹€.

4) Aκ°€ Null이 아닐 경우 A값을 λ°˜ν™˜ν•œλ‹€.

 

β€» COALESCE → μ™Όμͺ½λΆ€ν„° μ°¨λ‘€λŒ€λ‘œ NULL이 μ•„λ‹Œ 첫 번째 값을 λ°˜ν™˜


β–  문제 21. μ•„λž˜ SQL 의 결과둜 μ μ ˆν•œ 것은? (문제 이상, NATURAL JOIN 문제)

KEYA | COL1 | COL2        KEYB  | COL1 | COL2 
1       A      κ°€           1      A      κ°€
2       A      κ°€           3      C      λ‹€
5       C      λ‹€ 
​
- μ•„λž˜ 처럼 λ‚˜μ˜€λ‚˜ 닡이 μ—†μŒ
1       A      κ°€           1      A      κ°€
2       A      κ°€           1      A      κ°€ 
5       C      λ‹€           3      C      λ‹€
​
-> 문제 였λ₯˜λΌκ³  보여짐

*μ „μ›μ •λ‹΅μœΌλ‘œ μ²˜λ¦¬λ˜μ—ˆμŒ.


β–  문제 22. INNER JOIN κ΄€λ ¨ 문제

1) 

2) 

3) 

4) 

- KIM,KIM μ€‘λ³΅μœΌλ‘œ λ‚˜μ˜΄


β–  문제 23. LEFT OUTER JOIN 문제

1) 

2) 

3) 

4) 

- SMITH ROW κ°€ NULL 인 문제


β–  문제 24. ν–‰μ˜ μˆ˜κ°€ κ°€μž₯ λ§Žμ€ SQL 은?

- CROSS JON ν›„ 쑰건절 μžˆλŠ” 보기 (9개둜 λ‚˜λ¨Έμ§€ 보닀 1개 많음)

-> from μ ˆμ— table * table 은 쑴재 ν•˜μ§€ μ•ŠμŒ (Oracle μ—μ„œ μ—λŸ¬ λ°œμƒ)

[TAB1]
CODE    PCOLOR
---------------
1       λΉ¨κ°•
2       λ…Έλž‘
3       νŒŒλž‘
4       κ²€μ •


[TAB2]
CODE     PSIZE
---------------
1         μ†Œ
2         쀑
3         λŒ€
4         νŠΉλŒ€

 

1)                                2)
SELECT CODE                        SELECT *
FROM TAB1                          FROM TAB1 * TAB2
UNIOR ALL                          WHERE TAB1.CODE = TAB2.CODE;
SELECT CODE
FROM TAB2;

3)                                3)
SELECT *                          SELECT *
FROM TAB1, TAB2                   FROM TAB1 FULL OUTER JOIN TAB2
WHERE TAB1.PCOLOR                 ON TAB1.CODE = TAB2.CODE;
IN ('λ…Έλž‘','νŒŒλž‘','κ²€μ •')                        
AND TAB1.PCOLOR IN('μ†Œ','쀑','λŒ€');

 

μ •λ‹΅: 3번 (9개)


β–  문제 25. μ œμ•½ 쑰건에 λŒ€ν•œ μ„€λͺ…μœΌλ‘œ μ μ ˆν•˜μ§€ μ•Šμ€ 것은?

1) PKλŠ” Not Null 이닀.

2) FKλŠ” λΆ€λͺ¨ ν…Œμ΄λΈ”μ˜ κΈ°λ³Έν‚€λ₯Ό μ°Έμ‘°ν•œλ‹€.

3) UKλŠ” Not Null 이닀.

4) CheckλŠ” νŠΉμ • 쑰건을 λ§Œμ‘±ν•˜λŠ” κ°’λ§Œ ν—ˆμš©ν•œλ‹€.

 


β–  문제 26. μ•„λž˜μ˜ SQL κ³Ό 같은 SQL 은? (IN - EXISTS μ „ν™˜ 문제)

[SQL]
SELECT * FROM A
WHERE 번호 IN (
              SELECT 번호 FROM B 
              WHERE A.성별 = B.성별
              )

 

1)SELECT * FROM A         2)SELECT * FROM A
  WHERE EXISTS (            JOIN B ON A.성별 = B.성별
   SELECT 1 FROM B                            
   WHERE A.성별 = B.성별         
   AND A.번호 = B.번호
  )
                           
                 
3)SELECT * FROM A          4)SELECT * FROM A
  WHERE A.성별 IN (            WHERE 번호 = ALL (
   SELECT B.성별 FROM B         SELECT 번호 FROM B
   WHERE A.번호 = B.번호         WHERE A.성별 = B.성별
  )                           )

 

β€»μ •λ‹΅: 1번  

IN -> μ„œλΈŒμΏΌλ¦¬ κ²°κ³Ό 집합에 νŠΉμ • 값이 ν¬ν•¨λ˜μ–΄ μžˆλŠ”μ§€ 확인

EXISTS -> μ„œλΈŒμΏΌλ¦¬ λ‚΄ 쑰건을 λ§Œμ‘±ν•˜λŠ” 행이 ν•˜λ‚˜λΌλ„ μžˆλŠ”μ§€ 확인

*EXISTS μ•ˆμ— A.번호 = B.번호 쑰건으둜 인해 INκ³Ό 같은 κ²°κ³Όκ°€ λ‚˜μ˜΄.


β–  문제 27. μ•„λž˜μ˜ SQL 결과둜 μ•Œλ§žμ€ 것은?

[TAB_A]        [TAB_B]

COL1              COL2
-------           -------
1                  1
2                  2
NULL               3


[SQL]
SELECT COUNT(*) FROM TAB_B
WHERE COL2 NOT IN (SELECT COL1 FROM TAB_A)
1) Null

2) 0

3) 1

4) 전체 건수

β–  문제 28. μ•„λž˜μ˜ SQL 결과둜 μ•Œλ§žμ€ 것은? ( in - null 쑰건 )

[TAB}

COL
------
A
B
C
NULL

[SQL]
SELECT * FROM TAB
WHERE COL IN ('A','B',NULL)
1) A, B, C, NULL

2) A, B

3) A, B, NULL

4) NULL

 

β€» IN μ ˆμ— NULL 포함 μ‹œ NULLκ³Ό 비ꡐ λΆˆκ°€λ‘œ 행이 μ„ νƒλ˜μ§€ μ•ŠμŒ.
NULL 포함 μ‹œ OR COL IS NULL μ‘°κ±΄ μΆ”κ°€ ν•„μš”.


β–  문제 29. μ•„λž˜μ˜ SQL 결과둜 μ•Œλ§žμ€ 것은? ( λ‚˜μ΄ - 평균 )

[TAB]

λ‚˜μ΄_κ·Έλ£Ή      λ‚˜μ΄
-----------------
1            10
1            10
2            20
2            20
3            30
3            30
3            NULL


[SQL]
SELECT AVG(λ‚˜μ΄) AS 평균_λ‚˜μ΄ FROM TAB
GROUP BU λ‚˜μ΄_κ·Έλ£Ή
1) 10, 20, 25

2) 10, 20, NULL

3) 10, 20, 30

4) 10, 20, 20

β–  문제 30. μ•„λž˜μ˜ κ²°κ³Όλ₯Ό 좜λ ₯ν•˜κΈ° μœ„ν•΄ λΉˆμΉΈμ— μ•Œλ§žμ€ 것은? (GROUPING SET 문제)

<DATA>
COL1, COL2, 집계
--> COL2 만 NULL 이 μžˆλŠ” 집계
​
- GROUPING SET( (COL1, COL2), COL2)
1) 

2) 

3) 

4) 

 


β–  문제 31. μ•„λž˜μ˜ Window Function μ„€λͺ…에 λ§žλŠ” 것은?

[μ§€λ¬Έ]
νŒŒν‹°μ…˜λ³„ μœˆλ„μš°μ˜ 전체 κ±΄μˆ˜μ—μ„œ ν˜„μž¬ 행보닀 μž‘κ±°λ‚˜ 같은 κ±΄μˆ˜μ— λŒ€ν•œ λˆ„μ λ°±λΆ„μœ¨μ„ κ΅¬ν•˜λŠ” ν•¨μˆ˜
1) CUME_DIST

2) DENSE_RANK

3) RANK

4) PERCENT_RANK

 

β€» μ£Όμš” μœˆλ„μš° ν•¨μˆ˜ μ’…λ₯˜μ™€ μ„€λͺ…

μ’…λ₯˜ μ„€λͺ…
1. μˆœμœ„ ν•¨μˆ˜ (Ranking Functions) - RANK() : 동점이 μžˆμ„ 경우 동일 μˆœμœ„ λΆ€μ—¬, *μˆœμœ„ κ±΄λ„ˆλœ€
- DENSE_RANK() : 동점 μ‹œ 동일 μˆœμœ„ λΆ€μ—¬, *μˆœμœ„ κ±΄λ„ˆλ›°μ§€ μ•ŠμŒ
- ROW_NUMBER() : κ²°κ³Ό μ§‘ν•©μ˜ 각 행에 μˆœμœ„λ₯Ό λΆ€μ—¬
2. 집계 ν•¨μˆ˜ (Aggregate Functions) - SUM (), MAX(), MIN(), AVG(), COUNT()
- OVER() 절과 ν•¨κ»˜ μ‚¬μš©ν•΄ λˆ„μ  ν•©, 평균 등을 계산
3. κ·Έλ£Ή λ‚΄ ν–‰ μˆœμ„œ ν•¨μˆ˜ (Analytic Functions) - FIRST_VALUE() : κ·Έλ£Ή λ‚΄ 첫 번째 ν–‰μ˜ κ°’
- LAST_VALUE() : κ·Έλ£Ή λ‚΄ λ§ˆμ§€λ§‰ ν–‰μ˜ κ°’
- LAG() : ν˜„μž¬ ν–‰ 이전 ν–‰μ˜ κ°’ (κΈ°λ³Έ 1ν–‰ μ „)
- LEAD() : ν˜„μž¬ ν–‰ 이후 ν–‰μ˜ κ°’ (κΈ°λ³Έ 1ν–‰ ν›„)
4. λΉ„μœ¨ 및 뢄포 ν•¨μˆ˜ (Distribution Functions) - CUME_DIST() : λˆ„μ  λ°±λΆ„μœ¨ (ν˜„μž¬ 행보닀 μž‘κ±°λ‚˜ 같은 κ°’μ˜ λΉ„μœ¨)
- PERCENT_RANK() : μƒλŒ€μ  μˆœμœ„λ₯Ό 0~1 사이 ν–‰μ˜ μˆœμ„œλ³„ λ°±λΆ„μœ¨μ„ κ΅¬ν•œλ‹€.
- NTILE(n) : 데이터λ₯Ό n개의 그룹으둜 λ‚˜λˆ„κ³  κ·Έλ£Ή 번호 λΆ€μ—¬
- RATIO_TO_REPORT() : νŒŒν‹°μ…˜ λ‚΄ ν•© λŒ€λΉ„ 각 ν–‰ κ°’μ˜ λΉ„μœ¨

 


β–  문제 32. μ•„λž˜μ˜ μ„€λͺ…을 λ§Œμ‘±ν•˜λŠ” SQL 둜 μ•Œλ§žμ€ 것은? ( Window Function 문제 )

<μ§€λ¬Έ>
연봉은 μ˜€λ¦„μ°¨μˆœ, -100 ~ 200 μ‚¬μ΄μ˜ μ—°λ΄‰μž 수 κ΅¬ν•˜κΈ° 
​
- count(*) over(partition by department_id order by salary range between 100 preceding and 200 following ) (1번)
-> P.336 COUNT ν•¨μˆ˜ μ„€λͺ… λΆ€λΆ„ μ°Έκ³ 



연봉은 μ˜€λ¦„μ°¨μˆœ, -100 ~ 200 μ‚¬μ΄μ˜ μ—°λ΄‰μž 수 κ΅¬ν•˜κΈ° 

1)SELECT emp_id, salary, COUNT(*)         2)SELECT emp_id, salary, COUNT(*)
  OVER (PARTITION BY dep_id                 OVER (PARTITION BY dep_id
        ORDER BY salary ROWS                      ORDER BY salary RANGE
        BETWEEN 100 PRECEDING                     BETWEEN 100 PRECEDING
        AND 200 FOLLOWING)                        AND 200 FOLLOWING)
        AS salary_count                           AS salary_count
  FROM emp;                                 FROM emp;
  
 
3)SELECT emp_id, salary, COUNT(*)         4)SELECT emp_id, salary, COUNT(*)
  OVER (PARTITION BY dep_id)                OVER (ORDER BY salary RANGE
        AS salary_count                           BETWEEN 100 PRECEDING
  FROM emp;                                       AND 200 FOLLOWING)
                                                  AS salary_count
                                            FROM emp;

β€» μ •λ‹΅: 2번


β–  문제 33. μ•„λž˜μ˜ SQL μ—μ„œ 7780 번의 κ²°κ³ΌλŠ”? (ROW_NUMBER, RANK, DENSE_RANK λ¬»λŠ” 문제)

[TAB]
EMPLOTEE_ID       SALARY
-------------------------
7780              4000
7781              4000
7782              3000
7783              3000
7784              2000


[SQL]
SELECT EMPLOYEE_ID,
ROW_NUMBER() OVER (ORDER BY SALARY) AS ROW_NUM,
RANK() OVER (ORDER BY SALARY) AS RANK_NUM,
DENSE_RANK() OVER (ORDER BY SALARY) AS DENSE_RANK_NUM
FROM EMPLOYEES
1) 4, 4, 3

2) 3, 3, 3

3) 4, 4, 4

4) 3, 4, 3

 

β€»

- ROW_NUMBER() : κ²°κ³Ό μ§‘ν•©μ˜ 각 ν–‰μ˜ μˆœμ„œλŒ€λ‘œ 번호λ₯Ό λΆ€μ—¬ν•˜λ©° 쀑볡 μˆœμœ„ 없이 계속 증가

- RANK() : λ™μ μ΄ μžˆμ„ 경우 동일 μˆœμœ„ λΆ€μ—¬, *μˆœμœ„ κ±΄λ„ˆλœ€
- DENSE_RANK() : λ™μ  μ‹œ 동일 μˆœμœ„ λΆ€μ—¬, *μˆœμœ„ κ±΄λ„ˆλ›°μ§€ μ•ŠμŒ

 


β–  문제 34. κ°•μ’Œλ²ˆν˜Έκ°€ 100, 101 인 κ³Όλͺ©μ„ λ™μ‹œμ— λ“£λŠ” ν•™λ²ˆμ„ κ΅¬ν•˜λŠ” SQL 둜 μ•Œλ§žμ€ 것은?

1) ... WHERE κ°•μ˜λ²ˆν˜Έ = 100 AND κ°•μ˜λ²ˆν˜Έ = 101 
2) SELECT ... INTERSECT ... 
3) ... WHERE κ°•μ˜λ²ˆν˜Έ IN(100,101)
4) ... WHERE κ°•μ˜λ²ˆν˜Έ = 100 OR 101

 

μ •λ‹΅: 2번 INTERSECT (ꡐ집합)

1) 

2) 

3) 

4) 

β–  문제 35. μ•„λž˜μ˜ κ²°κ³Όλ₯Ό 좜λ ₯ν•˜λŠ” SQL 의 λΉˆμΉΈμ— μ μ ˆν•œ 것은? ( SELF JOIN 으둜 λ“±μˆ˜ κ΅¬ν•˜κΈ°)

<SQL>

​

SELECT ( 1 )

FROM ..

WHERE ... ( SELECT .. FROM .. WHERE ( 2 )

​

- COUNT(*)+1, T1.점수 < T2.점수

SELECT 이름,
       점수,
       (SELECT COUNT(*) + 1
        FROM t1 t2
        WHERE t1.점수 < t2.점수) AS μˆœμœ„
FROM t1
ORDER BY μˆœμœ„;

>> μ„€λͺ… : https://cafe.naver.com/sqlpd/81362

1) 

2) 

3) 

4) 

β–  문제 36. 행이 2건인 ν…Œμ΄λΈ”μ—μ„œ κ²°κ³Όκ°€ λ‹€λ₯Έ SQL 은?

​

- SELECT .. .FROM ... WHERE .. ROWNUM = 2

( ROWNUM = 2 λŠ” 데이터 0 건 λ°œμƒ )

1) 

2) 

3) 

4) 

​

β–  문제 37. μ•„λž˜μ˜ SQL 에 λŒ€ν•œ μ„€λͺ…μœΌλ‘œ μ•Œλ§žμ€ 것은? (UPDATE ꡬ문)

<SQL>
-- create table emp_test as select * from hr.employees;
​
update emp_test a 
set salary = (select salary * 1.1 from emp_test b 
              where a.employee_id = b.employee_id 
              and b.department_id = 60);
​
select * from emp_test
where department_id = 90;

​

<보기>

1번 DEPTNOκ°€ 10인 μ‚¬μ›λ“€μ˜ 월급을 10% μΈμƒν•˜λŠ” 쿼리이닀

2번 UPDATE ...WHERE DEPTNO = 10κ³Ό λ™μΌν•œ μ˜λ―Έμ΄λ‹€

3번 였λ₯˜κ°€ λ°œμƒν•œλ‹€

4번 DEPTNOκ°€ 10이 μ•„λ‹Œ λͺ¨λ“  μ‚¬μ›λ“€μ˜ 월급이 NULL둜 μˆ˜μ •λœλ‹€ -> μ •λ‹΅

1) 

2) 

3) 

4) 

β–  문제 38. μ•„λž˜μ˜ TABLE 에 λŒ€ν•œ SQL μˆ˜ν–‰ μ‹œ μ΅œμ’… κ²°κ³ΌλŠ”? ( μ œμ•½ 쑰건 체크 문제 )

​

<TABLE>
COL1 PK
COL2 CHECK > 500
​
<SQL>
INSERT ....
UPDATE .... (CHECK 쑰건 μœ„λ°˜)
INSERT .... (PK 쑰건 μœ„λ°˜)
INSERT ....
​
SELECT SUM(..)

​

- 770

1) 

2) 

3) 

4) 

β–  문제 39. μ•„λž˜μ˜ SQL 결과둜 μ•Œλ§žμ€ 것은?

<SQL>
SELECT COL1,
SUM(맀좜) 총맀좜
FROM ...
GROUP BY COL1
ORDER BY 총맀좜

 

- λΆ€μ„œ2 11300

λΆ€μ„œ1 18000

​

: μ˜€λ¦„μ°¨μˆœ μ •λ ¬μ΄λ―€λ‘œ μœ„μ™€ κ°™μŒ

1) 

2) 

3) 

4) 

β–  문제 40. μ•„λž˜μ˜ SQL 에 λŒ€ν•œ 결과둜 μ•Œλ§žμ€ 것은? ( NULL + 집계 μ—°μ‚°)

<TABLE>
...
​
<SQL>
SELECT COL1, MIN(COL2), MAX(COL2), SUM( COL2+ COL3)
...
​
- NULL NULL NULL NULL
A ..
B ..
C ..
1) 

2) 

3) 

4) 

β–  문제 41. μ•„λž˜μ˜ λΉˆμΉΈμ— μ•Œλ§žμ€ 것은?

<μ§€λ¬Έ>
μž…λ ₯, μˆ˜μ •, μ‚­μ œν•œ 데이터에 λŒ€ν•΄ μ „ν˜€ λ¬Έμ œκ°€ μ—†λ‹€κ³  νŒλ‹¨λμ„ 경우 ( ) λͺ…λ Ήμ–΄λ‘œ νŠΈλžœμž­μ…˜μ„ μ™„λ£Œν•  수 μžˆλ‹€.

- COMMIT

1) 

2) 

3) 

4) 

β–  문제 42. μ•„λž˜μ˜ SQL 에 λŒ€ν•œ μ„€λͺ…μœΌλ‘œ μ μ ˆν•œ 것은? 

<SQL>
​
SELECT ..
FROM .. μ£Όλ¬Έ join  μ£Όλ¬Έλ‚΄μ—­.....
...  κ³„μ’Œλ²ˆν˜Έ

​- μ˜€λ¦„μ°¨μˆœμœΌλ‘œ μ •λ ¬λœλ‹€ (DESC κ°€ μžˆμ—ˆλ‹€κ³  함)

1) 

2) 

3) 

4) 

β–  문제 43. ν…Œμ΄λΈ”μ˜ 데이터와 μ’…μ†λœ ν…Œμ΄λΈ”μ„ μ§€μš°λŠ” λͺ…λ Ήμ–΄λ‘œ μ•Œλ§žμ€ 것은?

1) TRUNCATE

2) DROP / CASCADE

3) DELETE

4) ALTER

β–  문제 44. μ•„λž˜μ˜ SQL 에 λŒ€ν•œ 결과둜 μ•Œλ§žμ€ 것은?

​

<SQL>
SELECT CASE WHEN ...
ELSE 'μ·¨κΈ‰μ•ˆν•¨' ..
FROM ...

​

- μ·¨κΈ‰μ•ˆν•¨ λ‚˜μ˜€λŠ” 보기

1) 

2) 

3) 

4) 

β–  문제 45. μ•„λž˜μ˜ SQL 에 λŒ€ν•œ μ„€λͺ…μœΌλ‘œ μ•Œλ§žμ€ 것은? (LIKE 문제)

<SQL>

SELECT .. FROM . WHERE COL1 LIKE 'A%'

​

- λŒ€λ¬Έμž A 둜 μ‹œμž‘ν•˜λŠ” λͺ¨λ“  ROW

1) 

2) 

3) 

4) 

β–  문제 46. μ•„λž˜μ˜ SQL κ²°κ³Όλ₯Ό 좜λ ₯ν•˜λŠ” SQL 둜 μ•Œλ§žμ€ 것은?

<DATA>
COL1 COL2
1 NULL
2 1
3 2
​
- LAG
1) 

2) 

3) 

4) 

​

β–  문제 47. μ•„λž˜ SQL 의 결과둜 μ•Œλ§žμ€ 것은? (집계 Count κ²°κ³Ό )

select count(*) + count(col1) + count(distinct col2)
from ...
-> 5+3+2 = 10
1) 

2) 

3) 

4) 

β–  문제 48. 단일행 ν•¨μˆ˜μ— λŒ€ν•œ μ„€λͺ…μœΌλ‘œ μ μ ˆν•˜μ§€ μ•Šμ€ 것은?

1) 

2) 

3) 

4) 

- GROUP BY 에 μ‚¬μš©ν•  수 μ—†λ‹€. (Group by 에 μ‚¬μš© κ°€λŠ₯)

​

<보기>

1) 각 행에 κ°œλ³„μ μœΌλ‘œ μ μš©λœλ‹€ (맞음)

2) μ—¬λŸ¬ 인자λ₯Ό 넣을 수 μžˆλ‹€ (맞음)

3) 쀑첩 μ‚¬μš©μ΄ κ°€λŠ₯ν•˜λ‹€ (맞음)

​>> SQL μ „λ¬Έκ°€ κ°€μ΄λ“œ P.153 에 μ•„λž˜ λ‚΄μš©μ΄ μžˆμŠ΅λ‹ˆλ‹€.

"단일행 ν•¨μˆ˜μ˜ μ€‘μš”ν•œ νŠΉμ§•μ€ λ‹€μŒκ³Ό κ°™λ‹€.

- SELECT, WHERE, ORDER BY μ ˆμ— μ‚¬μš© κ°€λŠ₯ν•˜λ‹€.

- 각 행듀에 λŒ€ν•΄ κ°œλ³„μ μœΌλ‘œ μž‘μš©ν•΄ 데이터 값듀을 μ‘°μž‘ν•˜κ³ , 각각의 행에 λŒ€ν•œ μ‘°μž‘ κ²°κ³Όλ₯Ό λ¦¬ν„΄ν•œλ‹€.

- μ—¬λŸ¬ 인자(Argument)λ₯Ό μž…λ ₯해도 단 ν•˜λ‚˜μ˜ 결과만 λ¦¬ν„΄ν•œλ‹€.

- ν•¨μˆ˜μ˜ 인자둜 μƒμˆ˜•λ³€μˆ˜•ν‘œν˜„μ‹μ΄ μ‚¬μš© κ°€λŠ₯ν•˜κ³ , ν•˜λ‚˜μ˜ 인수λ₯Ό κ°€μ§€λŠ” κ²½μš°λ„ μžˆμ§€λ§Œ μ—¬λŸ¬ 개의 인수λ₯Ό κ°€μ§ˆ μˆ˜λ„ μžˆλ‹€.

- νŠΉλ³„ν•œ κ²½μš°κ°€ μ•„λ‹ˆλ©΄ ν•¨μˆ˜μ˜ 인자둜 ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λŠ” ν•¨μˆ˜μ˜ 쀑첩이 κ°€λŠ₯ν•˜λ‹€."

​

μ•„λž˜ ν…ŒμŠ€νŠΈ 처럼 단일행 ν•¨μˆ˜... Group By 에도 μ‚¬μš©μ΄ κ°€λŠ₯ν•©λ‹ˆλ‹€.

Group by κ°€ λˆ„λ½λœλ“―μš”.

<Test : LiveSQL - Oracle >
select substr(first_name,1,3) as first_1_3,
       count(*)
from hr.employees 
where department_id =60
group by substr(first_name,1,3)
--> group by 에 잘 μ‚¬μš©λ¨ 
​
​
select substr(instr(first_name,'D',1),1,3) as first_1_3,
       count(*)
from hr.employees 
where department_id =60
group by substr(instr(first_name,'D',1),1,3) 
--> 쀑첩도 되고, μ€‘μ²©λœ ν•¨μˆ˜λ₯Ό select, group by λͺ¨λ‘ μ‚¬μš© κ°€λŠ₯함

β–  문제 49. Inner join 에 λŒ€ν•œ μ„€λͺ… 쀑 μ μ ˆν•˜μ§€ μ•Šμ€ 것은?

1) 

2) 

3) 

4) 

​- 쑰인으둜 μ‚¬μš©λ˜λŠ” μ»¬λŸΌμ€ 컬러λͺ…이 λ°˜λ“œμ‹œ 컬럼λͺ…이 κ°™μ•„μ•Ό ν•œλ‹€.


β–  문제 50. μ•„λž˜μ˜ SQL 에 λŒ€ν•œ 결과둜 μ•Œλ§žμ€ 것은? ( Inner join ν›„ 각 ν…Œμ΄λΈ”μ— λŒ€ν•œ 쑰건 체크)

<Table>
T1 
-----------------
col1 col2 col3 
κ°€    A    2
λ‚˜    B    3
λ‹€    C    null
​
T2
-----------------
col1 col2
2    A    
3    C
​

<SQL>
SELECT *
FROM T1 INNER JOIN T2 ON T1.COL2 = T2.COL2
WHERE 1=1
AND T1.COL3 >= 3 
AND T2.COL2 IN ('A','B')
​
- λ‚˜...
1) 

2) 

3) 

4) 

 

좜처: λ°μ΄ν„° μ „λ¬Έκ°€ 포럼, 데이터 μ „λ¬Έκ°€ 포럼 (λ‚˜μ―”λž‘ λ‹˜ κΈ°μΆœλ³΅μ›)

728x90
300x250

μ½”λ“œ