본문 바로가기

전체 글59

[웹개발공부] 도움되는 사이트 모음 보호되어 있는 글 입니다. 2021. 10. 9.
[오라클/Oracle] INSTER, SUBSTR, REPLACE SELECT DEPT_NM, SUBSTR(DEPT_NM, 0, INSTR(DEPT_NM, ' ')-1) DEPT_NM_KOR, REPLACE(SUBSTR(DEPT_NM, INSTR(DEPT_NM, ' ')+1), CHR(9), '') DEPT_NM_ENG FROM DEPT_TBL; SUBSTR(문자열, 시작위치[, 시작위치부터의 길이]) - [, 시작위치부터의 길이] 가 없으면 끝까지 - 시작위치가 음수일 경우 우측 기준 INSTR(문자열, 찾을 문자열[, 시작위치[, 몇 회차 발견 위치]]) - [, 몇 회차 발견 위치] 의 인덱스 값을 반환 - [, 시작위치]가 없으면 기본값 왼쪽에서부터 첫번째 발견 위치 =1과 같음 - [, 시작위치]를 -1로 하면 오른쪽에서부터 시작 REPLACE(문자열, 대상문.. 2021. 9. 18.
[Oracle/오라클] 다중 LIKE 조건 REGEXP_LIKE 일반적인 LIKE 조회 SELECT * FROM TB_GRADE WHERE STUDENT_NM LIKE '이%' OR STUDENT_NM LIKE '%길'; REGEXP_LIKE 는 ^, $ 등을 조합하여 사용할 수 있으며, 기본적으로 %문자% 형태 SELECT * FROM TB_GRADE WHERE REGEXP_LIKE(STUDENT_NM, '^이 | 길'); 2021. 7. 17.
[Oracle/오라클] ROW_NUMBER, RANK, DENSE_RANK, RANK() WITHIN ROW_NUMBER 중복없는 순번(랭킹) 구하기 SELECT TEST_CD, KOR, ROW_NUMBER() OVER (ORDER BY KOR DESC) AS 순위 FROM TB_GRADE_07 ORDER BY KOR DESC; DENSE_RANK 같은 값이 있으면 중복 순위를 부여 SELECT TEST_CD, KOR, DENSE_RANK() OVER (ORDER BY KOR DESC) AS 순위 FROM TB_GRADE_07 ORDER BY KOR DESC; RANK() WITHIN - RANK()순위 부여와 같으며, GROUP() 함수의 '필드명'의 '값'이 몇번째에 위치하는 구함 SELECT RANK(96) WITHIN GROUP(ORDER BY KOR DESC) "96의 위치", RANK(90) .. 2021. 7. 17.
[Oracle/오라클] LSITAGG SELECT SALES_DT , LISTAGG(PRODUCT_NM, ',') WITHIN GROUP (ORDER BY PRODUCT_NM) AS ITEMS FROM TB_SALES GROUP BY SALES_DT; LISTAGG에는 중복제거 DISTINCT 사용불가로, 중복값이 조회된다 SELECT DISTINCT SALES_DT , LISTAGG(PRODUCT_NM, ',') WITHIN GROUP (ORDER BY PRODUCT_NM) OVER(PARTITION BY SALES_DT) AS PRODUCT_NM FROM TB_SALES; SELECT LISTAGG(PRODUCT_NM, ',') WITHIN GROUP (ORDER BY PRODUCT_NM) AS ITEMS FROM (select DIST.. 2021. 7. 16.
[Oracle/오라클] ROLLUP 소계 / 총계 표현하기 SELECT * FROM TB_POINT; SELECT NVL(CUSTOMER_CD,'총합') AS customer_cd, TO_CHAR(SUM(POINT),'999,999') AS 포인트합 FROM TB_POINT GROUP BY ROLLUP(CUSTOMER_CD) ORDER BY customer_cd; SELECT NVL(CUSTOMER_CD, '소계') 고객번호, TO_CHAR(SUM(POINT), '999,999') 포인트합, COUNT(*) 인원 FROM TB_POINT GROUP BY ROLLUP(CUSTOMER_CD); SELECT NVL(SALES_DT, '총합') AS SALES_DT, CASE WHEN SALES_DT IS NOT NULL AND PRODUCT_NM IS NULL THE.. 2021. 7. 16.
[Oracle/오라클] ADD_MONTHS, MONTH_BETWEEN ADD_MONTHS 지정일 기준 개월 수 추가또는 감소 계산 SELECT SYSDATE, ADD_MONTHS(SYSDATE, -3) AS "3_BF_MON", ADD_MONTHS(SYSDATE, 5) AS "5_AF_MON" FROM DUAL; MONTH_BETWEEN 기간을 월 기준으로 계산 SELECT SYSDATE, ADD_MONTHS(SYSDATE, -3) AS "3_BF_MON", ROUND(MONTHS_BETWEEN(ADD_MONTHS(SYSDATE, -3), SYSDATE), 2) MONTH_TERM, TO_DATE('20220408', 'YYYYMMDD') AS "STR_DATE", ROUND(MONTHS_BETWEEN(TO_DATE('20220408', 'YYYYMMDD'), SYSDAT.. 2021. 7. 11.
[Oracle/오라클] LAST_DAY 월의 마지막 날 구하기 select substr(S1.DATE2021, 1, 6) AS MONTH2021, TO_CHAR(LAST_DAY(TO_DATE(S1.DATE2021)), 'DD') AS LAST_DAY FROM ( SELECT '20210101' AS DATE2021 FROM DUAL UNION ALL SELECT '20210201' AS DATE2021 FROM DUAL UNION ALL SELECT '20210301' AS DATE2021 FROM DUAL UNION ALL SELECT '20210401' AS DATE2021 FROM DUAL UNION ALL SELECT '20210501' AS DATE2021 FROM DUAL UNION ALL SELECT '20210601' AS DATE2021 FROM D.. 2021. 7. 11.
[Oracle / 오라클] Sub Query 서브쿼리 예제 [예제] 포인트 테이블에서 고객코드가 '2019000' 이후인 고객 중 포인트 합이 10,000 보다 큰 여성을 대상으로 고객코드, 고객명, 포인트 합계를 검색 - 출처 : 하루10분 _SQL 1) 포인트 테이블에서 고객코드가 '2019000' 이후인 고객 중 포인트 합 SELECT S1.CUSTOMER_CD, S1.TOT_POINT FROM (SELECT CUSTOMER_CD, SUM(POINT) TOT_POINT FROM TB_POINT WHERE CUSTOMER_CD >= '2019000' GROUP BY CUSTOMER_CD) S1 WHERE S1.TOT_POINT >10000; 2) 여성을 대상으로 조건 추가 SELECT S2.* FROM( SELECT S1.CUSTOMER_CD, S1.TOT_.. 2021. 5. 31.