๐๋ฐ์ดํฐ๋ฒ ์ด์ค:DB
2024.01.14
1๊ณผ๋ชฉ ๋ฐ์์์ ์ ๋ฐ๋ฅธ ์ํฐํฐ ๋ถ๋ฅ ๊ธฐ๋ณธ/ํค์ํฐํฐ : ๋ค๋ฅธ ์ํฐํฐ๋ก๋ถํฐ ์ฃผ์๋ณ์๋ฅผ ์์๋ฐ์ง ์๊ณ ์์ ์ ๊ณ ์ ํ ์ฃผ์๋ณ์๋ฅผ ๊ฐ์ง๋ฉฐ ์ฌ์, ๋ถ์, ๊ณ ๊ฐ, ์ํ, ์์ฌ ๋ฑ์ด ์๊ฐ ๋ ์ ์๋ ์ํฐํฐ ์ค์ฌ์ํฐํฐ ํ์์ํฐํฐ ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง์ด๋ ์ ๋ณด์์คํ
์ ๊ตฌ์ถํ๊ธฐ ์ํ ๋ฐ์ดํฐ ๊ด์ ์ ์
๋ฌด ๋ถ์ ๊ธฐ๋ฒ ํ์ค์ธ๊ณ์ ๋ฐ์ดํฐ์ ๋ํด ์ฝ์๋ ํ๊ธฐ๋ฒ์ ์ํด ํํํ๋ ๊ณผ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ตฌ์ถํ๊ธฐ ์ํ ๋ถ์/์ค๊ณ์ ๊ณผ์ ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง ์ ์์ ์ค๋ณต ๋น์ ์ฐ์ฑ : ๋ฐ์ดํฐ์ ์ ์์ ๋ฐ์ดํฐ์ ์ฌ์ฉ ํ๋ก์ธ์ค๋ฅผ ๋ถ๋ฆฌ ๋น์ผ๊ด์ฑ ๋ฐ์ดํฐ๋ชจ๋ธ๋ง์ DB๊ตฌ์ถํ๊ธฐ๋ง์ ์ํ ๊ฒ์ด ์๋๋ผ, ๋ชจ๋ธ๋ง ์์ฒด๋ก์ ์
๋ฌด๋ฅผ ์ค๋ช
ํ๊ณ ๋ถ์ํ๋๋ฐ ์ค์ํ ์๋ฏธ๊ฐ ์๋ค ๊ฐ๋
์ ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง : ์ถ์ํ ์์ค์ด ๋๊ณ ์
๋ฌด์ค์ฌ์ ์ด๊ณ ํฌ๊ด์ ์ธ ์์ค์ ๋ชจ๋ธ๋ง ์งํ. ์ ์ฌ์ ๋ฐ์ดํฐ ๋ชจ๋ธ..
๐๋ฐ์ดํฐ๋ฒ ์ด์ค:DB
2024.01.06
Union์ ํ
์ด๋ธ์ ์์ง ๋ฐฉํฅ์ผ๋ก ํฉ์น๋ค ์ด๋ union์ ์ค๋ณต row๋ฅผ ์ ๊ฑฐํ์ง๋ง, union all ์ ์ค๋ณต row๋ฅผ ์ ๊ฑฐํ์ง ์๋๋ค. Join์ ํ
์ด๋ธ์ ์ํ ๋ฐฉํฅ์ผ๋ก ํฉ์น๋ค ํ๋ก๊ทธ๋๋จธ์ค sql ๋ฌธ์ ์ค " ์คํ๋ผ์ธ/์จ๋ผ์ธ ํ๋งค ๋ฐ์ดํฐ ํตํฉํ๊ธฐ" ๋ฌธ์ ์์ Union์ ์ฌ์ฉํ๋ค. ONLINE_SALE ํ
์ด๋ธ OFFLINSE_SALE ํ
์ด๋ธ ONLINE_SALE ํ
์ด๋ธ๊ณผ OFFLINE_SALE ํ
์ด๋ธ์์ 2022๋
3์์ ์คํ๋ผ์ธ/์จ๋ผ์ธ ์ํ ํ๋งค ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ๋ ๋ฌธ์ ์๋ค. (OFFLINE_SALE ํ
์ด๋ธ์ USER_ID๊ฐ์ NULL ๋ก ํ์ํ๋ผ๋ ์กฐ๊ฑด์ด ์์๋ค.) ๋ ํ
์ด๋ธ์ ๊ฒฐ๊ณผ๋ฅผ ํฉ์น๊ธฐ ์ํด UNION์, ์คํ๋ผ์ธ ํ
์ด๋ธ์ USER_ID๋ฅผ NULL ๋ก ๋ํ๋ด๊ธฐ ์ํด NULL as user_id..
๐๋ฐ์ดํฐ๋ฒ ์ด์ค:DB
2024.01.05
๐ก์๊ฒ๋ ์ : GROUP BY์ HAVING ์กฐ๊ฑด์ COUNT(*) ๋ฅผ ์ฌ์ฉํ ์ ์๋ค. ๋ค์๊ณผ ๊ฐ์ ํ
์ด๋ธ์์, ๋์ผํ ํ์(USER_ID)์ด ๋์ผํ ์ํ(PRODUCT_ID)์ ์ฌ๊ตฌ๋งคํ ๋ฐ์ดํฐ๋ฅผ ๊ตฌํ๋ ค๋ฉด SELECT USER_ID, PRODUCT_ID, COUNT(*) FROM ONLINE_SALE GROUP BY USER_ID, PRODUCT_ID HAVING COUNT(*) >= 2; ์ ๊ฐ์ด ํ๋ฉด ๋๋ค. ์คํ๊ฒฐ๊ณผ
๐๋ฐ์ดํฐ๋ฒ ์ด์ค:DB
2024.01.04
group by์ ์ง๊ณํจ์๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด select ์ ์์ ์ง๊ณํจ์๋ฅผ ์ฐ๋ ์ปฌ๋ผ์ ์ ์ธํ ๋ชจ๋ ์ปฌ๋ผ์ group by ์ ์ธ์๋ก ์จ์ค์ผ ํจ! SELECT I.REST_ID, I.REST_NAME, I.FOOD_TYPE, I.FAVORITES, I.ADDRESS, ROUND(AVG(R.REVIEW_SCORE),2) SCORE FROM REST_INFO AS I JOIN REST_REVIEW AS R ON I.REST_ID=R.REST_ID WHERE I.ADDRESS LIKE '์์ธ%' GROUP BY I.REST_ID , I.REST_NAME, I.FOOD_TYPE, I.FAVORITES, I.ADDRESS ORDER BY SCORE desc, I.FAVORITES DESC; ํ๋ก๊ทธ๋๋จธ์ค ์์ธ์ ์์น ์..