๋ชฉ๋กData๐ (24)
EEALL@ONCE
๐ DAYOFWEEK DAYOFWEEK(date): ์ฃผ์ด์ง date์ ๋ํด ์์ผ์ ๋ฐํ. ์ด ๋, ๋ฌธ์๋ก ์ผ์์ผ ์์์ผ ์ด๋ ๊ฒ ๋ฐํํ๋๊ฒ ์๋๊ณ ์ซ์๋ก ์ ํํด์ ๋ฐํ -- ๐ท์ฌ์ค sql์ ์ ์ธ๊ณ๊ฐ ๊ฐ์ด ์ฐ๋๊ฑฐ๋ ํ๋์ ์ธ์ด๋ก ์๋ ค์ฃผ๊ธฐ๋ณด๋จ ์ซ์๋ก ์๋ ค์ฃผ๋๊ฒ ๋ ๋ง๋๊ฒ ๊ฐ๊ธฐ๋ ํ๋ค. ์ผ์์ผ์ 1, ์์์ผ์ 2, ..., ํ ์์ผ์ 7
SELECT bill.bill_sn, bill.ban, bill.bill_item, bill.charge_money, SUM(IFNULL(pym.pym_amt, 0)), SUM(IFNULL(sale.pym_amt, 0)), (bill.charge_money - SUM(IFNULL(pym.pym_amt, 0)) - SUM(IFNULL(sale.pym_amt, 0) ) as left_money FROM bill LEFT JOIN payment AS pym ON bill.bill_item = pym.pym_item AND bill.ban = pym.ban AND pym.code = 'PYM' LEFT JOIN payment AS sale ON bill.bill_item = sale.pym_item AND bi..
`IFNULL`์ ์ฒซ ๋ฒ์งธ ์ธ์๊ฐ `NULL`์ธ์ง ์๋์ง๋ฅผ ๊ฒ์ฌํจ. ๋ง์ฝ ์ฒซ ๋ฒ์งธ ์ธ์๊ฐ `NULL`์ด๋ฉด, ๋ ๋ฒ์งธ ์ธ์๋ฅผ ๋ฐํํ๊ณ , ๊ทธ๋ ์ง ์์ผ๋ฉด ์ฒซ ๋ฒ์งธ ์ธ์๋ฅผ ๋ฐํ. SELECT IFNULL(name, 'No name') FROM users; ๋ง์ฝ `name` ๊ฐ์ด `NULL`์ด๋ผ๋ฉด, 'No name'์ด๋ผ๋ ๋ฌธ์์ด์ ๋์ ๋ฐํํจ
1. ๐ํ ์ด๋ธ 2. ๐ง ๋ฌธ์ 2๊ฐ ์ด์์ ๊ฒ์๋ฌผ์ ์์ฑํ ์ฌ์ฉ์๋ง ์ ํํ๊ณ ์ถ๋ค. 3. ๐ก ํด๊ฒฐ SELECT u.id, u.username FROM Users u WHERE u.id IN ( SELECT p.user_id FROM Posts p GROUP BY p.user_id HAVING COUNT(*) >= 2 ); ๐ด HAVING HAVING ์ ์ SQL์์ ๊ทธ๋ฃนํ๋ ๊ฒฐ๊ณผ์ ๋ํ ํํฐ๋ฅผ ์ ๊ณต. ์ฆ, GROUP BY ์ ๋ก ๊ทธ๋ฃนํ๋ ๊ฒฐ๊ณผ ์ค ํน์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๊ทธ๋ฃน๋ง์ ์ ํํ๊ณ ์ถ์ ๋ ์ฌ์ฉ HAVING ์ ์ GROUP BY ์ ๊ณผ ํจ๊ป ์ฌ์ฉ๋๋ฉฐ, WHERE ์ ๊ณผ ๋น์ทํ๊ฒ ๋์ํ์ง๋ง ์ค์ํ ์ฐจ์ด์ ์ด ์์! WHERE ์ ์ ๊ฐ๋ณ ํ์ ๋ํ ํํฐ๋ฅผ ์ ๊ณตํ๋ ๋ฐ๋ฉด, HAVING ์ ์ ๊ทธ๋ฃน์ ๋ํ ํํฐ๋ฅผ ์ ๊ณต..
๐ ํ ์ด๋ธ : payment (์๋ฉ/ํ ์ธ) / bill (์ฒญ๊ตฌ) ๐ง๋ฌธ์ ์ฌํญ: ์ฒญ๊ตฌ ํ ์ด๋ธ๊ณผ ์๋ฉ ํ ์ด๋ธ์ด ์๋๋ฐ, ์ฒญ๊ตฌ ํ ์ด๋ธ ํญ๋ชฉ์ ๋ํ ์๋ฉ์ด ๋์๋์ง๋ฅผ ์ฒดํฌํ๊ณ ์ถ๋ค. ๋ค๋ง ๋ชจ๋ ๋ฉ๋ถ ์ด์ธ์๋ ๋ถ๋ถ์ ์ผ๋ก ์ฐ๋์ฐ๋ ๋ฉ๋ถํ์ ๊ฐ๋ฅ์ฑ๋ ์๋ ์ํฉ ๋ํ ์๋ฉ ํ ์ด๋ธ์ ๊ณ ๊ฐ์ด ์๋ฉํ ๊ธ์ก๋ ์์ด์ง๋ง ํ์ฌ๊ฐ ํ ์ธํด์ฃผ๋ ๊ธ์ก๋ ์์ธ๋ค. (์ฆ ์ฒญ๊ตฌ๊ธ-์๋ฉ๊ธ-ํ ์ธ๊ธ=0 ์ด ๋์ด์ผ ์๋ฉ์ด ๋๋ค.) ๐ก์๋ฃจ์ : SELECT bill.bill_sn, bill.ban, bill.bill_item, bill.charge_money, SUM(IFNULL(pym.pym_amt, 0)), SUM(IFNULL(sale.pym_amt, 0)), (bill.charge_money - SUM(IFNULL(pym.pym_amt, 0)) ..
์ธ๋ฑ์ค๋ฅผ ๋ง๋๋ ์ด์ ? ์ธ๋ฑ์ค๋ฅผ ์ค์ ํ๋ ๊ฒ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฑ๋ฅ๊ณผ ์ฟผ๋ฆฌ ์ฒ๋ฆฌ ์๋๋ฅผ ํฅ์์ํค๋๋ฐ ๋์์ด ๋ฉ๋๋ค. ์ธ๋ฑ์ค์ ์ค์ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ ์ด๋ธ์ ํน์ ์ด(์นผ๋ผ)์ ๋ํด ๋น ๋ฅธ ๊ฒ์ ๋ฐ ์ ๋ ฌ ์์ ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค. ๋น ๋ฅธ ๊ฒ์ ์๋: ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ๋ฉด ํ ์ด๋ธ์ ๋ฐ์ดํฐ๋ฅผ ์์ฐจ์ ์ผ๋ก ๊ฒ์ํ๋ ๊ฒ์ด ์๋๋ผ ์ธ๋ฑ์ค ํธ๋ฆฌ๋ฅผ ์ด์ฉํ์ฌ ๋น ๋ฅด๊ฒ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค. ์ธ๋ฑ์ค๊ฐ ์๋ ์ด์ ์ฌ์ฉํ ๊ฒ์์ ์ ํ ๊ฒ์๋ณด๋ค ํจ์ฌ ๋น ๋ฅด๋ฉฐ, ๋๋์ ๋ฐ์ดํฐ์์๋ ํจ์จ์ ์ผ๋ก ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค. ์ ๋ ฌ ์๋ ํฅ์: ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ๋ฉด ์ ๋ ฌ ์์ ๋ ํจ์ฌ ๋น ๋ฆ ๋๋ค. ์ธ๋ฑ์ค๊ฐ ์๋ ์ด์ ๊ธฐ์ค์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฌํ๋ฉด ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ์ํด ๋ฐ์ดํฐ๋ฅผ ๋น๊ตํ๋ ํ์๊ฐ ์ค์ด๋ค์ด ๋ ๋น ๋ฅธ ์ ๋ ฌ์ด ๊ฐ๋ฅํฉ๋๋ค. ์กฐ์ธ ์ฑ๋ฅ ํฅ์: ๋ ๊ฐ ..
TRUNCATE TABLE ํ ์ด๋ธ๋ช ; ํด๋น ์ฟผ๋ฆฌ๋ฌธ์ ํ ์ด๋ธ์ ๊ทธ๋๋ก ๋๊ณ ๊ทธ ์์ ๋ฐ์ดํฐ๋ง ์ญ์ ํ๋ ๊ฒฝ์ฐ์ ์ฌ์ฉ๋๋ค.
1. FROM [์ฃผ ๋ง๋ค ์ผ๋ง๋ ์์ฃผ ๋ฒ์ฃ๊ฐ ๋ฐ์ํ๋์ง ์์๋ณด๊ธฐ ] SELECT daily_stats.week , AVG(daily_stats.incidents_daily) FROM ( SELECT week , date , COUNT(incident_id) AS incidents_daily FROM crimes GROUP BY week, date ) daily_stats GROUP BY daily_stats.week ๊ฐ์์ ์๋ก์ด ํ ์ด๋ธ์ ๋ง๋ค๊ณ , ํด๋น ํ ์ด๋ธ ์ด๋ฆ์ daily_stats๋ผ๊ณ ํ๋ค. ์๋ธ์ฟผ๋ฆฌ๋ก ๋ง๋ค์ด์ง ๊ฐ์์ daily_stats table ( SELECT week , date , COUNT(incident_id) AS incidents_daily FROM crimes GROUP BY w..