BootCamp 6day

GyeongNamΒ·2023λ…„ 11μ›” 22일
0

BootCamp

λͺ©λ‘ 보기
6/49
post-thumbnail

πŸ“… 2023λ…„ 11μ›” 21일

μ˜€λŠ˜λ„ μ–΄μ œ 배운 것을 DB κ²©λ¦¬μˆ˜μ€€ λ³΅μŠ΅ν•˜κ³ , μƒˆλ‘œμš΄ JOIN, UNION, SubQuery, GROUP BYλ₯Ό 배우고 λ§Žμ€ ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ 문제λ₯Ό κ°•μ‚¬λ‹˜κ³Ό 같이 ν’€μ–΄λ΄€λ‹€. [DB 4일차]


6일차: JOIN, UNION, SubQuery, GROUP BY

JOIN :

μ—¬λŸ¬ ν…Œμ΄λΈ”μ—μ„œ κ°€μ Έμ˜¨ λ ˆμ½”λ“œλ₯Ό μ‘°ν•©ν•˜μ—¬ ν•˜λ‚˜μ˜ ν…Œμ΄λΈ”μ΄λ‚˜ κ²°κ³Ό μ§‘ν•©μœΌλ‘œ ν‘œν˜„

  • INNER JOIN :
    μ–‘μͺ½ ν…Œμ΄λΈ”μ„ λͺ¨λ‘ λ§Œμ‘±ν•˜λŠ” κ°’λ§Œ
  • OUTER JOIN :
    ν•œμͺ½ ν…Œμ΄λΈ”μ„ λ§Œμ‘±ν•˜λŠ” λͺ¨λ“  κ°’
    (λ‹€λ₯Έ ν…Œμ΄λΈ”μ˜ λ§Œμ‘±ν•˜λŠ” 값이 μ—†μœΌλ©΄ μžλ™μœΌλ‘œ null 값이 λ“€μ–΄κ°„λ‹€.)
SELECT *	
FROM AUTHOR AS A
INNER JOIN POSTS AS B
ON A.ID = B.AUTH_ID;

SELECT *
FROM AUTHOR AS A
LEFT OUTER JOIN POSTS AS B
ON A.ID = B.AUTH_ID;

SELECT A.NAME , B.TITLE	-- νŠΉμ • κ°’λ§Œ κ°€μ Έμ˜¬ 수 μžˆλ‹€
FROM AUTHOR AS A
LEFT JOIN POSTS AS B
ON A.ID = B.AUTH_ID;

SELECT A.NAME , B.TITLE
FROM AUTHOR AS A
LEFT JOIN POSTS AS B
ON A.ID = B.AUTH_ID
WHERE A.AGE>=25;	-- whereμ ˆμ„ μ‚¬μš©ν•΄μ„œ 쑰건을 μΆ”κ°€ν•  수 μžˆλ‹€.

UNION :

μ—¬λŸ¬ 개의 SELECT 문의 κ²°κ³Όλ₯Ό ν•˜λ‚˜μ˜ ν…Œμ΄λΈ”μ΄λ‚˜ κ²°κ³Ό μ§‘ν•©μœΌλ‘œ ν‘œν˜„ (μ€‘λ³΅μ œκ±°)

  • WITH RECURSIVE :
    μž¬κ·€λ¬ΈμœΌλ‘œμ„œ 자기 μžμ‹ μ„ μ°Έμ‘°ν•˜μ—¬ 반볡적으둜 데이터λ₯Ό μƒμ„±ν•˜κ±°λ‚˜ λ³€ν˜•ν•˜λ©΄μ„œ ν•˜λ‚˜μ˜ ν…Œμ΄λΈ”μ„ λ§Œλ“œλŠ” μš©λ„
--- ν”Όλ³΄λ‚˜μΉ˜ μˆ˜μ—΄
WITH RECURSIVE Fibonacci (n, fib1, fib2) AS (
SELECT 1, 0, 1  
UNION ALL
SELECT n + 1, fib2, fib1 + fib2 FROM Fibonacci WHERE n < 10  -- μž¬κ·€ 단계
)
SELECT n, fib1 FROM Fibonacci;

SubQuery :

쿼리 내뢀에 ν¬ν•¨λ˜μ–΄ μžˆλŠ” SELECT 문을 의미

  • IN : 포함
  • NOT IN : 포함 ν•˜μ§€ μ•ŠλŠ”
SELECT HOUR, 0 AS 'COUNT' 
FROM NUMBER_SEQ
WHERE HOUR NOT IN(	-- μ„œλΈŒ 쿼리
    SELECT CAST(date_format(DATETIME, '%H') AS signed) AS HOUR
    FROM ANIMAL_OUTS 
)
UNION
SELECT CAST(date_format(DATETIME, '%H') AS signed) AS HOUR, COUNT(*) AS COUNT
FROM ANIMAL_OUTS 
GROUP BY HOUR
ORDER BY HOUR

GROUP BY :

μ„ νƒλœ λ ˆμ½”λ“œμ˜ 집합을 νŠΉμ • κ°’μœΌλ‘œ κ·Έλ£Ήν™”ν•œ κ²°κ³Ό 집합

  • HAVING : κ·Έλ£Ήν™”λœ ν›„μ˜ 데이터에 λŒ€ν•œ 쑰건을 μ„€μ •
    • COUNT() : ν–‰μ˜ 개수λ₯Ό μ„Έμ–΄μ€Œ
    • AVG() : ν–‰ μ•ˆμ— μžˆλŠ” κ°’μ˜ 평균을 λ‚΄μ–΄μ€Œ
    • MIN() : ν–‰ μ•ˆμ— μžˆλŠ” κ°’μ˜ μ΅œμ†Ÿκ°’μ„ λ°˜ν™˜ν•΄μ€Œ
    • MAX() : ν–‰ μ•ˆμ— μžˆλŠ” κ°’μ˜ μ΅œλŒ“κ°’μ„ λ°˜ν™˜ν•΄μ€Œ
    • SUM() : ν–‰ μ•ˆμ— μžˆλŠ” κ°’μ˜ 합을 λ‚΄μ–΄μ€Œ
SELECT AUTH_ID,
count(*) AS 'COUNT',
round( avg(price) ) AS 'AVG', -- round : μ†Œμˆ˜μ  정리
MIN(price) AS 'MIN',
MAX(price) AS 'MAX',
SUM(price) AS 'SUM'
FROM POSTS
group by AUTH_ID;

SELECT 
AUTH_ID,
round( avg(price) ) AS 'AVG'
FROM POSTS
WHERE price>2000	-- 각 κ°’μ˜ 쑰건
group by AUTH_ID
HAVING avg(price)>2000	-- 그룹 쑰건

SELECT
FROM
JOIN
ON
WHERE
GROUP BY
HAVING
ORDER BY 

SQL문은 λŒ€λΆ€λΆ„ 순으둜 μ§„ν–‰λœλ‹€.
μ˜€λŠ˜μ€ λ§Žμ€ ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ 문제λ₯Ό ν’€μ—ˆλ‹€

https://school.programmers.co.kr/learn/courses/30/lessons/59042
https://school.programmers.co.kr/learn/courses/30/lessons/144854
https://school.programmers.co.kr/learn/courses/30/lessons/59412
https://school.programmers.co.kr/learn/courses/30/lessons/133026
https://school.programmers.co.kr/learn/courses/30/lessons/151137
https://school.programmers.co.kr/learn/courses/30/lessons/131536
https://school.programmers.co.kr/learn/courses/30/lessons/59413


github λ°μ΄ν„°λ² μ΄μŠ€ μ‹€μŠ΅ λ‚΄μš©

profile
503 Service Unavailable Error

0개의 λŒ“κΈ€