20. ๋ํ๋ฏผ๊ตญ ์ง์ญ๋ณ ์๊ถ ๋ถ์ํด๋ณด๊ธฐ (+์ค๋ฅํด๊ฒฐ)
datset
์์๊ณต์ธ์์ฅ์งํฅ๊ณต๋จ_์๊ฐ(์๊ถ)์ ๋ณด https://www.data.go.kr/data/15083033/fileData.do
์ธ๊ตฌ ์ ์ฒด ์๊ตฐ๊ตฌ ํํฉ https://27.101.213.4/index.jsp#
ORA-01722 ํด๊ฒฐํ๊ธฐ
์์ ํ์ผ์ ์ด์ด์ data๊ฐ์ ํ์ธํ๊ณ , ์ ๋นํ ํ์(varchar2 > number)๊ณผ ์์น(7 > 38)๋ก ๋ณ๊ฒฝํด์ฃผ์๋ค.
number์ ๊ฒฝ์ฐ Precision์ 1~38์ด ๊ฐ๋ฅํ ๊ฒ์ ๊ฐ๊ณผํ๊ณ 50์ผ๋ก ์ค์ ํ๋ค๊ฐ ์ค๋ฅ ๋ฉ์์ง๋ฅผ ํ๋ฒ ๋ ๋ดค๋ค.
ORA-00942 ํด๊ฒฐํ๊ธฐ
โ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๊ฒฐ์ด ์๋์ด ์์
โก ํ ์ด๋ธ์ ๊ถํ์ด ์์
โข ๋ง์ถค๋ฒ์ด ์ค๋ฅ ๋๋ ์ค์ ๋ก ํ ์ด๋ธ์ด ์กด์ฌ ํ์ง ์์
โฃ ํ ์ด๋ธ์ ์์ ์์ ์๋ฅผ ๋ช ์ํ์ฌ, SELECT ํด์ผ ํจ ( SELECT * FROM ์์ ์.ํ ์ด๋ธ๋ช )
DROP TABLE ๋ก ํ ์ด๋ธ ์ ๊ฑฐ ํ, ํ ์ด๋ธ ์ฌ์์ฑํด์ ํด๊ฒฐ.
DATA IMPORT ๊ณผ์ ์์์ ๋ฒ๊ฑฐ๋ก์
ํ ๋ฒ์ ํ ๊ฐ์ง์ ์์ ํ์ผ๋ง IMPORTํ ์ ์์๋ค.
๊ตฌ๊ธ๋งํด๋ดค๋๋ฐ, SQL DEVELOPER์ ํ๊ณ์ ์ธ ๊ฒ ๊ฐ๋ค.
์ด๋ฏธ ๋ง๋ค์ด์ ธ ์๋ ํ ์ด๋ธ์ ์๋ฃ๋ฅผ ์ฝ์ ํ ๋๋ ๋ฐ์ดํฐ ํ์ ์ ๋ฐ๋ก ์ค์ ํ์ง ์์๋ ๋์ด์ ๊ทธ๋๋ง ์์ ์์์๊ฐ์ ์ค์ผ ์ ์์๋ค.
์ค๋์ ๋ชฉํ!
1. ์ง์ญ๋ณ ์ ์ข ๊ฐ์์ ์ข ๋ฅ๋ฅผ ์ถ๋ ฅํ๋ค.
2. ์ ๊ตญ ๊ฐ์ง์ ํธํ /์ฝ๋ ๊ฐฏ์๊ฐ ๋ง์ ์์๋๋ก ์ถ๋ ฅํ๋ค.
3. ์ธ๊ตฌ ์ ๋๋น ๋งค์ฅ ๋น ์ธ๊ตฌ ์๋ฅผ ์ถ๋ ฅํ๋ค.
SELECT * FROM POPULATION;
SELECT * FROM COMMERCIAL_AREA;
SELECT COUNT(*) FROM;
์นผ๋ผ๋ช ๋ณ๊ฒฝ
ALTER TABLE COMMERCIAL_AREA RENAME COLUMN "์๊ถ์
์ข
๋๋ถ๋ฅ๋ช
" TO "MAIN";
ALTER TABLE COMMERCIAL_AREA RENAME COLUMN "์๊ถ์
์ข
์ค๋ถ๋ฅ๋ช
" TO "MIDDLE";
ALTER TABLE COMMERCIAL_AREA RENAME COLUMN "์๋๋ช
" TO "AREA1";
ALTER TABLE COMMERCIAL_AREA RENAME COLUMN "์๊ตฐ๊ตฌ๋ช
" TO "AREA2";
์๊ถ TABLE ์๊ตฐ๊ตฌ๋ช
์นผ๋ผ ์ฐ๊ฒฐ
SELECT MAIN, MIDDLE, AREA1||' '||AREA2 AS AREA FROM COMMERCIAL_AREA;
์๊ถ TABLE ์๊ตฐ๊ตฌ๋ช
์นผ๋ผ ํฉ์น๊ธฐ
: ๊ฐ์ด๋ฐ ๋์ด์ฐ๊ธฐ ์ฒ๋ฆฌ๊ฐ ์ ๋ผ์ ์ด ๋ฐฉ๋ฒ์ ํ๊ธฐ
SELECT CONCAT(AREA2, AREA1) AS AREA
FROM COMMERCIAL_AREA;
์ง์ญ TABLE ์๋ฃ๊ฐ ์์ (์ง์ญ๋ณ ๋งค์ฅ ์ ์ถ๊ฐ)
SELECT AREA1||' '||AREA2 AS "AREA", MAIN, MIDDLE, COUNT(AREA1||' '||AREA2) AS "TOTAL"
FROM COMMERCIAL_AREA
GROUP BY AREA1, AREA2, MAIN, MIDDLE
ORDER BY AREA1||' '||AREA2;
data ์์
๋ก ์ต์คํฌํธ ํ ์ฌ๊ฐ๊ณตํด์ ์ํฌํธ
SELECT * FROM REAL_COM
ORDER BY AREA;
์ธ๊ตฌ TABLE ํ์ํ ๋ฐ์ดํฐ๋ง ์ถ์ถํด์ ์ต์คํฌํธ > ์ํฌํธ
SELECT AREA, TOTAL
FROM POPULATION;
* ์ค์ : ๊ฐ์๋ "๊ฐ๋ฆ์ ๊ฐ์๋"๋ก ์์ ๋ฐ๋์ด ์ถ๋ ฅ๋๋ ๊ฒ ์์ ํ๊ธฐ
DELETE FROM COMMERCIAL_AREA WHERE AREA2 = '๊ฐ์๋';
* ์ค์ : ์ง์ญ๋ช
ํ๋ค์ ๊ธธ์ด๊ฐ ์ ๊ฐ๊ฐ์
SELECT SUBSTR(AREA, 1, 15), TOTAL -- 1๋ฒ์งธ ์์น๋ถํฐ 8๊ฐ์ ๋ฌธ์๊น์ง๋ง ์ถ์ถํ๊ฒ ๋ค
FROM POPULATION;
๊ทธ๋์, data ์์
๋ก ์ต์คํฌํธ ํ, excel์์ ctrl+F๋ก ์ฌ๊ฐ๊ณตํด์ ์ํฌํธํ๊ธฐ๋ก ํจ.
* ์์ฌ์ด ๋ถ๋ถ : SQL์์์ ๋ค ์ฒ๋ฆฌํ ์ ์์์๊น? ์ง์ ์์ ํด์ผํ๋ ๋ฐ์ดํฐ์ ์์ด ๋ง์๋ค๋ฉด?
SELECT * FROM REAL_POP
ORDER BY AREA;
* ์ธ๊ตฌ์ ์์
ํํฉ INNER JOIN
: ๊ฐ์ด ์ถ๋ ฅ๋์ง ์๋๋ค.
SELECT *
FROM REAL_COM a
LEFT JOIN REAL_POP b
ON a.AREA = b.AREA;
ํด๊ฒฐ!
๋ฌธ์์ด์ ๊ธธ์ด๊ฐ ์ ๊ฐ๊ฐ์ด์ด์ ๊ณต๋ฐฑ๋ง ์ถ๋ ฅ๋ ๊ฑฐ์๋ค. ์์ชฝ ๊ฐ์ ์๋ฅด๊ณ , ์ฌ๋ก๋ฅผ ์ ๊ทํํ๋ฉด ๊ฐ์ด ์ถ๋ ฅ๋๋ค.
SELECT LENGTH (AREA)
FROM REAL_POP; -- 6~14
SELECT LENGTH (AREA)
FROM REAL_COM; --7~14
SELECT a.AREA, a.MAIN, a.MIDDLE, a.TOTAL, b.TOTAL "POP_TOTAL"
FROM REAL_COM a
LEFT JOIN REAL_POP b
ON UPPER(TRIM(a.AREA)) = UPPER(TRIM(b.AREA));
์ฐธ๊ณ : https://keizwer.tistory.com/190
https://stackoverflow.com/questions/26239760/inner-join-on-varchar
[๋ฐ์ดํฐ ์ด์ฉ๋ฐฉ๋ฒ] ์์ธ์ ๊ฐ๋จ๊ตฌ์์ ์ ์ผ ๋ง์ ์์ ์
์ข
์์๋ณด๊ธฐ
SELECT a.AREA, a.MAIN, a.MIDDLE, a.TOTAL, b.TOTAL "POP_TOTAL"
FROM REAL_COM a
LEFT JOIN REAL_POP b
ON UPPER(TRIM(a.AREA)) = UPPER(TRIM(b.AREA))
WHERE a.AREA LIKE '%์์ธํน๋ณ์ ๊ฐ๋จ๊ตฌ%'
ORDER BY a.TOTAL DESC;
[๊ฒฐ๊ณผ] ์์/ํ์ 4135๊ฐ์ ๊ฐ๊ฒ ์กด์ฌ
์ ๊ตญ ๊ฐ์ง์์ ํธํ /์ฝ๋ ๊ฐฏ์๊ฐ ๋ง์ ์ง์ญ ์์ ์์๋ณด๊ธฐ
SELECT a.AREA, a.MAIN, a.MIDDLE, a.TOTAL, b.TOTAL "POP_TOTAL"
FROM REAL_COM a
LEFT JOIN REAL_POP b
ON UPPER(TRIM(a.AREA)) = UPPER(TRIM(b.AREA))
WHERE a.MIDDLE LIKE '%ํธํ
%'
ORDER BY a.TOTAL DESC;
[๊ฒฐ๊ณผ] ์ ์ฃผํน๋ณ์์น๋ ์ ์ฃผ์๋ ์ ๊ตญ์์ ํธํ
/์ฝ๋ ์๋ฐ์์ค์ด ์ ์ผ ๋ง์ ์ง์ญ์ด๋ค.
์์ธํน๋ณ์ ๊ฐ๋จ๊ตฌ์ ๋ถ์ฐ๊ด์ญ์์ ํด์ด๋๊ตฌ ์ธ๊ตฌ ์ ๋๋น ์นดํ ๋น ์ธ๊ตฌ ์๋ฅผ ๋น๊ตํด๋ณด๊ธฐ
SELECT a.AREA, a.MAIN, a.MIDDLE, a.TOTAL, b.TOTAL "POP_TOTAL", ROUND(b.TOTAL/a.TOTAL, 2) "๋งค์ฅ๋น ์ธ๊ตฌ ์"
FROM REAL_COM a
LEFT JOIN REAL_POP b
ON UPPER(TRIM(a.AREA)) = UPPER(TRIM(b.AREA))
WHERE (ROUND(b.TOTAL/a.TOTAL, 2) IS NOT NULL)
AND b.AREA LIKE '%์์ธํน๋ณ์ ๊ฐ๋จ๊ตฌ%' AND a.MIDDLE LIKE '%์นดํ%';
[๊ฒฐ๊ณผ] ์์ธํน๋ณ์ ๊ฐ๋จ๊ตฌ์ ๋งค์ฅ๋น ์ธ๊ตฌ์๋ 218๋ช , ๋ถ์ฐ๊ด์ญ์ ํด์ด๋๊ตฌ์ ๋งค์ฅ๋น ์ธ๊ตฌ ์๋ 492๋ช ์ด๋ค.
๊ฐ๋จ๊ตฌ ์ธ๊ตฌ ์ ๋๋น ์นดํ์ ์๊ฐ ํจ์ฌ ๋ง์ผ๋ฏ๋ก ๊ฐ๋จ๊ตฌ์ ์นดํ๊ฐ ๋ ํผ์กํ๋ค.