๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

SQL39

[SQL Mid] Hackerrank ๋ฌธ์ œํ’€์ด - The PADs (substr,concat, ์ƒํ•˜) CONCAT ์—ฐ๊ฒฐํ•จ์ˆ˜ ์‚ฌ์šฉ ์‹œ :(1) ORACLE ๊ธฐ๋ณธ์ ์œผ๋กœ || ์„ ์‚ฌ์šฉ!   โ–ถ A || '_' || B(2) MYSQL์€ concat ํ•จ์ˆ˜ ์‚ฌ์šฉ โ–ถ ( A,  '_' B) (3) MYSQL ์€ ;๋กœ ๋‘ ๊ฐœ์˜ ANS๋ฅผ ํ•ฉ์น  ์ˆ˜ ์žˆ์Œ   ORACLE Answer:  SELECT NAME ||  '('  ||  SUBSTR(OCCUPATION,1,1) ||  ')'  FROM OCCUPATIONS ORDER BY NAME; SELECT 'There are a total of ' ||  COUNT(OCCUPATION) ||  ' ' ||  LOWER(OCCUPATION) ||  's.'FROM OCCUPATIONS GROUP BY OCCUPATION ORDER BY COUNT(OCCUPATION), OC.. 2024. 10. 31.
[SQL Mid] Hackerrank ๋ฌธ์ œํ’€์ด - The Competitor (multi - join) Answer 1 : SELECT ha.hacker_id, ha.name FROM Submissions AS sub           JOIN Hackers AS ha ON sub.hacker_id = ha.hacker_id           JOIN Challenges AS ch ON sub.challenge_id = ch.challenge_id           JOIN Difficulty AS di ON ch.difficulty_level = di.difficulty_levelWHERE sub.score = di.scoreGROUP BY ha.hacker_id, ha.name HAVING COUNT(ha.name) > 1ORDER BY COUNT(ha.name) DESC, ha.hacker_id ASC 2024. 10. 17.
[SQL Mid] Hackerrank ๋ฌธ์ œํ’€์ด - The report (Join, case when) Q. The reportใ„ด ํ…Œ์ด๋ธ” Student, Grade๋ฅผ Join ํ•˜์—ฌ ใ„ด 70์  ์ด์ƒ/ 8๋“ฑ๊ธ‰์€ ์ด๋ฆ„์„ ๋ณด์ด๊ณ , ๊ทธ ์ดํ•˜๋Š” null ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์„œ ๋ณด์—ฌ๋‹ฌ๋ผใ„ด ์ˆœ์„œ๋Š” ์ ์ˆ˜ ๊ธฐ์ค€ desc   Answer 1 : select if (g.Grade         ,g.Grade        ,s.Marks  from Students as s  inner join Grades as g on s.Marks between g.Min_Mark and g.Max_Mark order by g.Grade desc, s.Name ascโ€ป If (์กฐ๊ฑด, ๋‚˜์˜ค๊ธฐ๋ฅผ ๋ฐ”๋ผ๋Š” ๊ฐ’, ์•„๋‹ ๊ฒฝ์šฐ์˜ ๊ฐ’) , (๊ฐ€๋กœ ์žˆ์Œ) Answer 2 :select case when s.marks >=70           then s.name  .. 2024. 10. 17.
[SQL ์ค‘๊ธ‰] 27. ์š”์ผ ๋ณ„ ์ด ๋งค์ถœ์•ก์˜ + ํ‰๊ท /๋น„์œจ (With ๊ตฌ๋ฌธ) MY SQL ๋ช…๋ช… ์‹œ, ๋‘˜ ๋‹ค as & "์Œ๋”ฐ์˜ดํ‘œ "  ์“ฐ์ง€ ๋งˆ์„ธ์š” *as ๆœ‰็„ก ็„ก้—œ, ํ…Œ์ด๋ธ”์€ ๋ฐ”๋กœ ์ด๋ฆ„ ์ ๊ณ , ์ปฌ๋Ÿผ์€ "์Œ๋”ฐ์˜ดํ‘œ"    1. ์š”์ผ๋ณ„ ๋งค์ถœ์•ก์˜ +ํ‰๊ท (avg ํ•จ์ˆ˜)  โ—€ By From ์ ˆ ์„œ๋ธŒ์ฟผ๋ฆฌ    -. 1๋‹จ๊ณ„ : ์š”์ผ๋ณ„ ์ด ๋งค์ถœ์•ก (From ์ ˆ ์„œ๋ธŒ์ฟผ๋ฆฌ)     -. 2๋‹จ๊ณ„ : avg (ํ•จ์ˆ˜)  SQL ๊ตฌ๋ฌธ : select avg(sales)from (select day, sum(total_bill) as "sales"         from tips         group by day) as Daily_sales    *** ์ผ์ผ ํ‰๊ท  ๋งค์ถœ์„ ๊ณ„์‚ฐ ํ•  ๋•Œ = day, sum(total_bill)์„ ํ•จ๊ป˜ ๊ณ„์‚ฐํ•ด์•ผ ํ•œ๋‹ค.  Q. ์™œ sum(total)๋งŒ ๊ตฌํ•ด์„œ from ์ ˆ์— ์“ฐ๋ฉด .. 2024. 8. 26.
[SQL ์ค‘๊ธ‰] 26. ๋ฐฐ์†ก ์˜ˆ์ •์ผ ์˜ˆ์ธก ์„ฑ๊ณต๊ณผ ์‹คํŒจ (case when) ๋ฌธ์ œ : 2020๋…„ 1์›” ํ•œ ๋‹ฌ ๋™์•ˆ ๋ฐœ์ƒํ•œ ์ฃผ๋ฌธ์˜ ๋ฐฐ์†ก ์˜ˆ์ธก์ด ์ •ํ™•๋„ ๋ถ„์„-. Success: ๋ฐฐ์†ก ์™„๋ฃŒ -. Fail : ๋ฐฐ์†ก ์™„๋ฃŒ > ์˜ˆ์ธก ์กฐ๊ฑด: ๋ฐฐ์†ก ์™„๋ฃŒ & ์˜ˆ์ • ๋ฐ์ดํ„ฐ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ๋Š” ๊ณ„์‚ฐ์—์„œ ์ œ์™ธํ•จ   SQL ๊ตฌ๋ฌธ: select  date(๊ตฌ๋งค ๋‚ ์งœ),  count(case when ๋ฐฐ์†ก ์™„๋ฃŒ ๋ฐฐ์†ก ์˜ˆ์ • then ID end) as "sucess",  count(case when ๋ฐฐ์†ก ์™„๋ฃŒ  > ๋ฐฐ์†ก์˜ˆ์ • then ID end) as "fail"from  ์ฃผ๋ฌธ ํ…Œ์ด๋ธ”where  ๊ตฌ๋งค ๋‚ ์งœ between '2020-01-01 00:00:00' and '2020-01-31 23:59:59'  and ๋ฐฐ์†ก ์™„๋ฃŒ is not NULL  and ๋ฐฐ์†ก ์˜ˆ์ • is not nullgroup by date(๊ตฌ.. 2024. 8. 26.
[SQL ์ค‘๊ธ‰] 25. ํ”ผ๋ฒ— ํ…Œ์ด๋ธ” (PIVOT) ์กฐํšŒ SQL ํ”ผ๋ฒ— ํ…Œ์ด๋ธ” : inline-view:  xy - pivot : x   SQL๋กœ ํ”ผ๋ฒ— ํ…Œ์ด๋ธ” ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ• : 1)  XY ๊ฐ’์„ ์กฐํšŒํ•œ๋‹ค2)  XY๊ฐ’์„ From ์ ˆ ์„œ๋ธŒ์ฟผ๋ฆฌ๋กœ ๋„ฃ๋Š”๋‹ค 3)  Pivot ๋ผ์ธ์— ๋“ค์–ด์˜ค๋Š” X๊ฐ’์€ ๋ชจ๋‘ ๋‚˜์—ดํ•ด์•ผ ํ•œ๋‹ค.    → pivot ( count(*) for  x์ ˆ  in ( 'x1' , 'x2', 'x3' , 'x4' , 'x5' )  1. Pivot  : - X : Team_id , Y : Birth_year, ๊ฐ’: Countselect * from  ( select team_id, substr(birth_date,1,2) as birth_year from player) pivot ( count(*)  for team_id  in ('K01','K02','K03'.. 2024. 4. 5.
[SQL ์ค‘๊ธ‰] 24. DML - Insert, Update, Delete + Merge 1. Insert  : (์‹ ๊ทœ) ๋ฐ์ดํ„ฐ ์‚ฝ์ž…โ‘  Insert into ํ…Œ์ด๋ธ”๋ช…      values (์ˆซ์ž 1, '๋ฌธ์ž 2', ์ˆซ์ž 3)โ‘ก  Insert into ํ…Œ์ด๋ธ”๋ช… (์นผ๋Ÿผ 1, ์นผ๋Ÿผ 2, ์นผ๋Ÿผ 3)      values (์ˆซ์ž 1, '๋ฌธ์ž 2', ์ˆซ์ž 3)โ˜… Insert + ์„œ๋ธŒ์ฟผ๋ฆฌ : ๋™์ผํ•œ ๊ตฌ์„ฑ์˜ ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์„ +UNION ALL ๋„ฃ๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ : โ‘ข Insert into ํ…Œ์ด๋ธ”๋ช…      select empno, ename, sal*2     from emp     where deptno =10    2. Update  : (๊ธฐ์กด) ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝโ˜… Where ์ ˆ ์ง€์ • ํ•„์ˆ˜ :  update ๊ตฌ๋ฌธ ์‚ฌ์šฉ ์‹œ, where์ ˆ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ๋ชจ๋“  ํ–‰์ด ์ˆ˜์ •๋จ  โ‘  Update ํ…Œ์ด๋ธ”      set.. 2024. 3. 6.
[SQL ์ค‘๊ธ‰] 23. ์ œ์•ฝ์กฐ๊ฑด(Constraint) - PK, FK, Check Constratin  = ์ œ์•ฝ / ๊ทœ์น™์ •ํ•ด์ง„ ๊ทœ์น™์— ๋”ฐ๋ผ ๋ฐ์ดํ„ฐ ์ž…๋ ฅํ•˜๋Š” ์กฐ๊ฑด   1.1 Primary Key  - Create -- ์ง์ ‘ ๋‹ฌCreate table emp( ์นผ๋Ÿผ 1 ๋ฐ์ดํ„ฐ ํƒ€์ž… primary key, ์ปฌ๋Ÿผ2 ๋ฐ์ดํ„ฐ ํƒ€์ž…) ;Create table emp( ์ปฌ๋Ÿผ1 ๋ฐ์ดํ„ฐ ํƒ€์ž…, ์ปฌ๋Ÿผ2 ๋ฐ์ดํ„ฐ ํƒ€์ž…,  constraints ํ…Œ์ด๋ธ”_์นผ๋Ÿผ 1 primary key (์นผ๋Ÿผ 1)) ;  1.2 Primary Key  - Alter Alter table ํ…Œ์ด๋ธ”๋ช… add constraint primay key (์นผ๋Ÿผ 1)  2.1  Foreign Key - Create Create table emp( ์นผ๋Ÿผ 1 ๋ฐ์ดํ„ฐ ํƒ€์ž…, ์นผ๋Ÿผ 2 ๋ฐ์ดํ„ฐ ํƒ€์ž…, constraint ํ…Œ์ด๋ธ”_์นผ๋Ÿผ 2 foreign ke.. 2024. 3. 5.
[SQL ์ค‘๊ธ‰] 22. DDL - Creat, Alter, Rename, Drop, Truncate 1.Create ๊ตฌ๋ฌธCreate table ํ…Œ์ด๋ธ”๋ช… ; (   ์ปฌ๋Ÿผ๋ช… ๋ฐ์ดํ„ฐํƒ€์ž… [์ œ์•ฝ์กฐ๊ฑด] ,   ์ปฌ๋Ÿผ๋ช… ๋ฐ์ดํ„ฐํƒ€์ž… [์ œ์•ฝ์กฐ๊ฑด] , ) ; Create view ๋ทฐ๋ช… as ์กฐํšŒ์ฟผ๋ฆฌ Cerate index ์ธ๋ฑ์Šค๋ช… on ํ…Œ์ด๋ธ”๋ช… (์ปฌ๋Ÿผ๋ช…1, ์ปด๋Ÿผ๋ช…2 ...)   2.1 ์นผ๋Ÿผ (๋ฐ์ดํ„ฐ) ์ถ”๊ฐ€ ๋ฐ ๋ณ€๊ฒฝAlter table ํ…Œ์ด๋ธ”๋ช…rename (ํ˜„)ํ…Œ์ด๋ธ”๋ช… to (์‹ )ํ…Œ์ด๋ธ”๋ช… ;์‹ ๊ทœ ํ…Œ์ด๋ธ”๋ช… ๋ณ€๊ฒฝrename column (ํ˜„)์ปฌ๋Ÿผ๋ช… to (์‹ )์ปฌ๋Ÿผ๋ช… ;์‹ ๊ทœ ์ปฌ๋Ÿผ๋ช…์œผ๋กœ ๋ณ€๊ฒฝadd ์นผ๋Ÿผ๋ช… ๋ฐ์ดํ„ฐํƒ€์ž… ;์‹ ๊ทœ ์ปฌ๋Ÿผ ์ถ”๊ฐ€modify  ์นผ๋Ÿผ๋ช… ๋ฐ์ดํ„ฐํƒ€์ž… ;ํ˜„์žฌ ์นผ๋Ÿผ (๋ฐ์ดํ„ฐํƒ€์ž…/๊ธธ์ด) ๋ณ€๊ฒฝโ€ป ํ•ด๋‹น ์นผ๋Ÿฝ์˜ ๊ฐ’์„ ์ง€์›Œ์•ผ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅdrop ์นผ๋Ÿผ๋ช… ;ํ˜„์žฌ ์นผ๋Ÿผ ์ œ๊ฑฐ  2.2 ์ œ์•ฝ์กฐ๊ฑด ์ถ”๊ฐ€ ๋ฐ ์ œ๊ฑฐAlter table ํ…Œ์ด๋ธ”๋ช… .. 2024. 3. 5.
[SQL ์ค‘๊ธ‰] 21.๊ทธ๋ฃน์ง‘๊ณ„_Roll up, Grouping set, Cube [๊ทธ๋ฃน ํ•จ์ˆ˜ - ๊ทธ๋ฃน๋ณ„๋กœ ๊ฐ’์˜ ์ง‘๊ณ„ & ์ถœ๋ ฅ]-. Group by + 1.roll up  (๋ง์•„ ์˜ฌ๋ผ๊ฐ€๊ธฐ + ์ „์ฒด)                   + 2. cube (๊ฒฝ์šฐ์˜ ์ˆ˜ + ์ „์ฒด)                   + 3. grouping set    1.Group by + Roll up()   -. ์–ธ์ œ : ์†Œ๊ณ„/ ์ด๊ณ„๋ฅผ ์ง‘๊ณ„ํ•  ๋•Œ (Partially Sum + Total) Group by rollup (A, B, C) =  Group by A, B, C (๊ฒฐ๊ณผ 1)   +Group by A, B (๊ฒฐ๊ณผ 2)   +Group by A (๊ฒฐ๊ณผ 3)   + ์ดํ•ฉ Group by rollup(A, (B, C))=  Group by A, (B, C)     โ—€(Group by A, B, C) (๊ฒฐ๊ณผ 1.. 2024. 2. 24.