Oracle38 [SQL] ๋ฐฑ๋ถ์จ ์์ ๋ชฉ์ฐจ SELECT 5 / 30 * 100 FROM dual ; 1. ๋ฐฑ๋ถ์จ ๊ณ์ฐ์ ๊ตฌํ๋ ค๋ ์ปฌ๋ผ์ ์ ์ฒด ์ปฌ๋ผ๊ฐ์๋ก ๋๋ ๋ค 100์ ๊ณฑํ๋ค. ์ค์ SQL(cubrid ์ฌ์ฉ) SELECT CASE WHEN A.HOUSE_TY_SECD = '1' THEN '๋ค๊ฐ๊ตฌ' WHEN A.HOUSE_TY_SECD = '2' THEN '๋น๋ผ' WHEN A.HOUSE_TY_SECD = '3' THEN '์ํํธ' WHEN A.HOUSE_TY_SECD = '4' THEN '์คํผ์คํ ' WHEN A.HOUSE_TY_SECD = '5' THEN '๋จ๋ ' WHEN A.HOUSE_TY_SECD = '6' THEN '๋ค์ธ๋' WHEN A.HOUSE_TY_SECD = '7' THEN '์ฐ๋ฆฝ' WHEN A.HOUSE_TY_SECD = '8.. IT/DataBase 2024. 3. 20. [Oracle] N๊ฐ์ํ๊น์ง ๋ ์ง ๊ตฌํ๊ธฐ (feat. Connect by level) WITH calendar AS ( SELECT TO_CHAR(TO_DATE('20231201') + LEVEL - 1, 'YYYYMMDD') AS dt FROM dual CONNECT BY LEVEL ์ค๋ผํด์ Connect by level์ ์ด์ฉํด์ ๋ ์ง๋ฅผ ๊ตฌํ ์ ์๋๋ฐ ํน์ ๋ ์ง๋ก๋ถํฐ 4๊ฐ์ ์ง๋์์ ๊น์ง์ ๋ ์์ผ์ ๊ตฌํ ์ ์๋ค.์ ์ฟผ๋ฆฌ๋ 12์1์ผ ๊ธฐ์ค์ผ๋ก 4๊ฐ์ ํ์ ๋ ์ง๋ฅผ ์ ๋ถ ๊ตฌํ๋ ์ฟผ๋ฆฌ๋ค.SELECT์ ์์์ LEVEL -1์ 1์ผ๋ถํฐ ๊ตฌํ๊ธฐ ์ํด์๋ค.์ด๋ ๊ฒ ํ์ง ์์ ๊ฒฝ์ฐ 12์2์ผ๋ถํฐ ์กฐํ๋๋ค.(์ด๊ธฐ๊ฐ์ด 1์ด๊ธฐ์)level์ 1๋ถํฐ 122๊น์ง ์์ฑ๋๋๋ฐ ๋ ์ง ํ์์ด๊ธฐ์ 01 ~ 31๊น์ง ์๋์ผ๋ก ๋งคํ๋์ด ์กฐํ๋๋ค.๊ฐ์ธ ์คํฐ๋ ๊ธฐ๋ก์ ๋ฉ๋ชจํ๋ ๊ณต๊ฐ์ด๋ผ ํ๋ฆฐ์ ์ด ์์ ์ ์์ต๋๋ค.. IT/DataBase 2023. 12. 3. [DBMS] N:M(๋ค๋๋ค) ๊ด๊ณ์ผ ๋ ๋งคํ ํ ์ด๋ธ๋ก ๊ด๊ณ ํ์ฑ ํ๋์ ๋ฉ๋ด๋ ์ฌ๋ฌ๊ฐ์ ์ ์ ๊ทธ๋ฃน๊ณผ ์ฐ๊ฒฐ๋ ์ ์๊ณ ํ๋์ ์ ์ ๊ทธ๋ฃน๋ ์ฌ๋ฌ๊ฐ์ ๋ฉ๋ด์ ๋ณด์ ์ฐ๊ฒฐ๋ ์ ์๊ธฐ์ ๋ค๋๋ค ๊ด๊ณ๋ผ๊ณ ํ ์ ์๋ค.(ํ์๊ณผ ์ ์ ๊ทธ๋ฃน๋ ๋ง์ฐฌ๊ฐ์ง๋ค) ์๋ฅผ ๋ค์ด ํ์๊ด๋ฆฌ๋ผ๋ ๋ฉ๋ด๋ฅผ A๊ทธ๋ฃน๋ ๊ฐ์ง ์ ์๊ณ B๊ทธ๋ฃน๋ ๊ฐ์ง ์ ์๋ค. A๊ทธ๋ฃน์ ํ์๊ด๋ฆฌ ๋ฟ ์๋๋ผ ์์คํ ๊ด๋ฆฌ์ ๋ฉ๋ด์๋ ์ฐ๊ฒฐ๋ ์ ์๋ค. ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์๋ ๋ค๋๋ค ๊ด๊ณ๋ฅผ ํ์ด๋ด๊ธฐ ์ํด ์ค๊ฐ์ ๋งคํ ํ ์ด๋ธ์ ๋ฌ์ 1:N, N:1๋ก ๊ด๊ณ๋ฅผ ํ ๋งคํ ํ ์ด๋ธ์ ์ฐ๊ฒฐ์ํค๋ ํ ์ด๋ค์ PK๋ง์ ๊ฐ์ง๊ณ ์๊ณ ์ด๋ฅผ ๊ฐ์ง๊ณ ๊ฐ ํ ์ด๋ธ์์ ์๋ก ์ฐธ์กฐํ ์ ์๋ค. ์์ ๊ด๊ณ์์ ํ์์ด ์์ ๊ณผ ์ฐ๊ฒฐ๋ ๋ฉ๋ด์ ๋ณด๋ฅผ ์๊ณ ์ถ์ผ๋ฉด ์๋์ฒ๋ผ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ๋ฉด ๋๋ค. /* ์ฌ์ฉ์์ ๋งคํ๋ ๋ฉ๋ด ์กฐํ */ WITH UserGroupCodes AS ( /* ์ ์ ๊ทธ.. IT/DataBase 2023. 9. 24. [Oracle] ORDER BY ์ ์กฐ๊ฑด ์ฒ๋ฆฌ ํ์ ํ ์ด๋ธ ์ ๋ ฌ ์ ์๋์ฒ๋ผ ์กฐ๊ฑด์ผ๋ก ์์๋ฅผ ๋ถ์ฌํ ์ ์์(๋ค์ํ๊ฒ ์์ฉ ๊ฐ๋ฅ) /* ์ฌ์ฉ์ ์์ด๋๊ฐ 'l'๋ก ์์ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ฐ์ ์์๋ก ํ ๋ค์ ์ด๋ฆ ์ค๋ฆ์ฐจ์ ์ ๋ ฌ */ SELECT ROW_NUMBER() OVER( ORDER BY CASE WHEN USER_ID LIKE 'l%' THEN 1 ELSE 2 END , A.USER_NAME ) AS rn , A.USER_ID , A.USER_NAME , A.USER_EMAIL FROM USER_INFO A ; IT/DataBase 2023. 9. 24. [Oracle] ๊ฐ์ฅ ๋ง์ง๋ง row ์กฐํ(feat. partition by) 1:N์ ๊ด๊ณ์์ N์ชฝ์ ๋ฐ์ดํฐ๊ฐ ์ฌ๋ฌ row๊ฐ ์์ ๊ฒฝ์ฐ ๊ฐ์ฅ ๋ง์ง๋ง row๋ง ์กฐํ SELECT EMP_ID /* ์์ด๋ */ , EMP_POSITION_CD /* ์ง๊ธ์ฝ๋ */ , EMP_ROLE_CD /* ์ง์ฑ ์ฝ๋ */ FROM ( SELECT EMP_ID , EMP_POSITION_CD , EMP_ROLE_CD , ROW_NUMBER() OVER(PARTITION BY EMP_ID ORDER BY H_SNO DESC) AS RowIdx FROM EMP_INFO_HISTORY ) WHERE RowIdx = 1 IT/DataBase 2023. 8. 7. [Oracle] ํด๋น์๋ง์ผ ~ ์ต์ ๋ง์ผ๊น์ง ์กฐํ SELECT TO_CHAR(SYSDATE,'YYYYMM') || LPAD(LEVEL, 2, '0') AS dt FROM dual CONNECT BY LEVEL IT/DataBase 2023. 5. 30. [Oracle] ์ฌ๊ท ๋ณต์ฌ ๋๋ฏธ ๋ฐ์ดํฐ๋ฅผ ๋ง๋ค๊ธฐ ์ํด ํ ์ด๋ธ์ ์๋ ๋ฐ์ดํฐ๋งํผ ๋ณต์ฌ ex) BOARD ํ ์ด๋ธ์ 1๊ฐ์ row๋ง ์์ ๊ฒฝ์ฐ ์๋ ์ฟผ๋ฆฌ๋ฅผ ์คํํ๋ฉด 1๊ฐ๊ฐ ๋ ์๊ธฐ๊ณ ๋ค์ ์คํํ๋ฉด 4๊ฐ๊ฐ ์๊ธฐ๊ณ ๋ค์ ์คํํ๋ฉด 8๊ฐ๊ฐ ์๊ธฐ๊ณ ๊ณ์ ํ ์ด๋ธ์ ์ ์ฅ๋ ๊ฐ์๋งํผ ๋ฐฐ๋ก ๋์ด๋๋ค. INSERT INTO BOARD (BOARD_NO, TITLE, CONTENT, WRITER) (SELECT BOARD_NO_SEQ.NEXTVAL, TITLE, CONTENT, WRITER FROM BOARD); IT/DataBase 2023. 5. 7. [Oracle] ๋ฌ๋ ฅ ๋ง๋ค๊ธฐ WITH first_day AS ( SELECT TRUNC(SYSDATE,'MM') AS first_day FROM dual ),cal AS ( SELECT TO_CHAR(first_day + LEVEL -1,'D') ์์ผ_์ซ์ , TO_CHAR(first_day + LEVEL -1,'MM-DD') ์์ผ , TO_CHAR(first_day + LEVEL -1,'IW') ์ฃผ์ฐจ FROM first_day CONNECT BY first_day + LEVEL -1 IT/DataBase 2023. 4. 1. INSERT/UPDATE template(feat. ์์ CONCATENATE) ์์ ์ CONCATENATE() ํจ์๋ฅผ ์ด์ฉํด์ ๊ฐ๋จํ UPDATE template์ ๋ง๋ค์๋ค. ๊ทธ๋ฅ ๋จ์ํ table๋ช ๊ณผ ์ ๋ฐ์ดํธ ์ key๊ฐ, ์ ๋ฐ์ดํธ ํ ์ปฌ๋ผ์ ์ ๋ ฅ ๋ฐ์์ ๋ฌธ์์ด์ ์ด์ด๋ถ์ฌ UPDATE๋ฌธ์ ์์ฑํ ๋ค SQL๋ฌธ ํ์ธ ํ DB ํด๋ผ์ด์ธํธ ํ๋ก๊ทธ๋จ์์ ์คํํ๋ฉด ๋๋ค. ์๋ ๋์์์ ๋ณด๋ฉด ๋ฐ๋ก ์ดํด๊ฐ ๋ ๋ฏ ํ๋ค. ์์ ๋ ์ ๋ฐ์ดํธ 1๊ฑด๋ง ์คํํ์ง๋ง ์ฌ๋ฌ๊ฐ ์ ๋ ฅํด์ SQL ๋๋๊ทธ ํ ๋ค๋์ ์ ๋ฐ์ดํธ๋ ๊ฐ๋ฅํ๋ค. ์ฌ์ค ๋ค๋ ์ ๋ฐ์ดํธ ๋๋ฌธ์ ๋ง๋ ๊ฑฐ๋ค. INSERT QUERY IT/development 2023. 3. 5. [SQL] update์์ case when์ ์ฌ์ฉ update์์ case when์ ๋ก ์กฐ๊ฑด์ ๋ง๊ฒ ์์ ์๋์ฒ๋ผ temp_user ํ ์ด๋ธ์ ๋ฐ์ดํฐ๊ฐ ๋ค์ด ์๋ค. ์๋์ฒ๋ผ update๋ฌธ์ ์คํํ๋ฉด ์กฐ๊ฑด์ ๋ง๊ฒ ์์ ๋๋ค. update temp_user set user_name = case when user_seq = 1 then '์' when user_seq = 2 then 'ํผ' when user_seq = 3 then '๊ทธ' when user_seq = 4 then '๋' when user_seq = 5 then '์กฐ' when user_seq = 6 then '๋' when user_seq = 7 then '๋ง' when user_seq = 8 then '์ฌ' when user_seq = 9 then '๋ผ' end ; ๊ฒฐ๊ณผ๊ฐ IT/DataBase 2023. 3. 4. ์ด์ 1 2 3 4 ๋ค์