SQL/ORACLE
-
OVER() 집계함수(GROUP BY, ORDER BY)를 사용할때 서브쿼리와 GROUP BY를 개선하기 위한 함수로 GROUP BY와 서브쿼리를 사용하지 않는다. SELECT MAX(컬럼) OVER()-- 전체행 중에 최고값 , MAX(컬럼) OVER(PARTITION BY 컬럼)-- 그룹내 최고값 , MIN(컬럼)OVER()-- 전체행 중에 최소값 , MIN(컬럼)OVER(PARTITION BY 컬럼)-- 그룹내 최소값 , SUM(컬럼)OVER()-- 전체행 합 , SUM(컬럼)OVER(PARTITION BY 컬럼)-- 그룹내 합 , AVG(컬럼)OVER()-- 전체행 평균 , AVG(컬럼)OVER(PARTITION BY 컬럼)-- 그룹내 평균 , COUNT(*)OVER() -- 전체행 카운트 , C..
[ORACLE] OVER()OVER() 집계함수(GROUP BY, ORDER BY)를 사용할때 서브쿼리와 GROUP BY를 개선하기 위한 함수로 GROUP BY와 서브쿼리를 사용하지 않는다. SELECT MAX(컬럼) OVER()-- 전체행 중에 최고값 , MAX(컬럼) OVER(PARTITION BY 컬럼)-- 그룹내 최고값 , MIN(컬럼)OVER()-- 전체행 중에 최소값 , MIN(컬럼)OVER(PARTITION BY 컬럼)-- 그룹내 최소값 , SUM(컬럼)OVER()-- 전체행 합 , SUM(컬럼)OVER(PARTITION BY 컬럼)-- 그룹내 합 , AVG(컬럼)OVER()-- 전체행 평균 , AVG(컬럼)OVER(PARTITION BY 컬럼)-- 그룹내 평균 , COUNT(*)OVER() -- 전체행 카운트 , C..
2022.12.05 -
IN 값이 포함되는 데이터를 추출할 때 사용 SELECT * FROM TABLE WGERE COLUMN IN 'A'-- 'A'를 포함한 데이터 추출 ※ [서브쿼리도 사용가능] SELECT * FROM MAIN_TABLE WHERE COLUMN IN ( SELECT SUB_COLUMN FROM SUB_TABLE WHERE SUB_COLUMN IS NOT NULL -- 결과 값에 NULL이 포함되면 데이터가 출력되지 않는다. ) NOT IN 값이 포함되지 않은 데이터를 추출할 때 사용 SELECT * FROM TABLE WGERE COLUMN NOT IN 'A'-- 'A'를 포함하지 않은 데이터 추출 ※ [서브쿼리도 사용가능] SELECT * FROM MAIN_TABLE WHERE COLUMN NOT IN ..
[ORACLE] IN / NOT ININ 값이 포함되는 데이터를 추출할 때 사용 SELECT * FROM TABLE WGERE COLUMN IN 'A'-- 'A'를 포함한 데이터 추출 ※ [서브쿼리도 사용가능] SELECT * FROM MAIN_TABLE WHERE COLUMN IN ( SELECT SUB_COLUMN FROM SUB_TABLE WHERE SUB_COLUMN IS NOT NULL -- 결과 값에 NULL이 포함되면 데이터가 출력되지 않는다. ) NOT IN 값이 포함되지 않은 데이터를 추출할 때 사용 SELECT * FROM TABLE WGERE COLUMN NOT IN 'A'-- 'A'를 포함하지 않은 데이터 추출 ※ [서브쿼리도 사용가능] SELECT * FROM MAIN_TABLE WHERE COLUMN NOT IN ..
2022.12.05 -
SELECT A.TABLE_NAME, B.COMMENTS FROM ALL_TABLES A, ALL_TAB_COMMENTS B WHERE A.TABLE_NAME = B.TABLE_NAME AND B.COMMENTS LIKE '%%' -- 찾고자하는 테이블의 코멘트 입력 ORDER BY A.TABLE_NAME;
[ORACLE] COMMENT로 TABLE 찾기SELECT A.TABLE_NAME, B.COMMENTS FROM ALL_TABLES A, ALL_TAB_COMMENTS B WHERE A.TABLE_NAME = B.TABLE_NAME AND B.COMMENTS LIKE '%%' -- 찾고자하는 테이블의 코멘트 입력 ORDER BY A.TABLE_NAME;
2022.12.01 -
IN 연산자 IN연산자를 사용시 or 조건을 여러개 사용하지 않아도 된다. User_name IN (Jon, Jain, Ham) // User_name이 jon이거나 jain이거나 ham 중에 어느 하나만이라도 값이 있다면 출력
ININ 연산자 IN연산자를 사용시 or 조건을 여러개 사용하지 않아도 된다. User_name IN (Jon, Jain, Ham) // User_name이 jon이거나 jain이거나 ham 중에 어느 하나만이라도 값이 있다면 출력
2022.11.03 -
START WITH ~ CONNECT BY START WITH : 계층 구조의 데이터를 읽어나가는데 있어 시작점을 지정한다. CONNECT BY : 다음에 읽을 자식 데이터를 지정한다. CONNECT BY의 조건식에 'PRIOR 자식컬럼 = 부모컬럼' : 이 형태의 조건을 사용하면 계층 구조의 데이터를 부모 → 자식 방향으로 내려가는 순방향 조회를 한다. NOCYCLE : 데이터를 읽어가면서 이미 조회했던 동일한 데이터를 다시 읽게 될 겨우 사이클(CYCLE)이 형성되었다고 하는데 NOCYCLE을 명시할 경우 사이클이 발생한 이후의 데이터는 읽지 않는다. CONNECT BY에 작성한다. ORDER SIBLINGS BY : ORDER BY와 다르게 형제(SIBLINGS) 노드 즉, 동일한 LEVEL의 데이..
START WITH ~ CONNECT BYSTART WITH ~ CONNECT BY START WITH : 계층 구조의 데이터를 읽어나가는데 있어 시작점을 지정한다. CONNECT BY : 다음에 읽을 자식 데이터를 지정한다. CONNECT BY의 조건식에 'PRIOR 자식컬럼 = 부모컬럼' : 이 형태의 조건을 사용하면 계층 구조의 데이터를 부모 → 자식 방향으로 내려가는 순방향 조회를 한다. NOCYCLE : 데이터를 읽어가면서 이미 조회했던 동일한 데이터를 다시 읽게 될 겨우 사이클(CYCLE)이 형성되었다고 하는데 NOCYCLE을 명시할 경우 사이클이 발생한 이후의 데이터는 읽지 않는다. CONNECT BY에 작성한다. ORDER SIBLINGS BY : ORDER BY와 다르게 형제(SIBLINGS) 노드 즉, 동일한 LEVEL의 데이..
2022.10.18 -
MONTHS_BETWEEN 두 날짜의 월 차이를 계산해서, 개월 수를 산출할 때는 MONTHS_BETWEEN 함수를 사용하며 함수의 첫 번째 인자의 날짜에서 두 번째 인자의 날짜를 빼는 방식으로 개월 수가 계산된다. MONTHS_BETWEEN의 예시 SELECT MONTHS_BETWEEN(SYSDATE, TO_DATE('2021/11/01', 'YYYY/MM/DD')) AS MONTH FROM DUAL /* SYSDATE = 2022-01-19 TO_DATE = 2021-11-01 MONTHS_BETWEEN = (2022/01/19) - (2021/11/01) = 2.5개월 */ 1. 소수점 절사(TRUNC) SELECT TRUNC(MONTHS_BETWEEN(SYSDATE,TO_DATE('2021-11-..
두 날짜 개월 수 계산 방법MONTHS_BETWEEN 두 날짜의 월 차이를 계산해서, 개월 수를 산출할 때는 MONTHS_BETWEEN 함수를 사용하며 함수의 첫 번째 인자의 날짜에서 두 번째 인자의 날짜를 빼는 방식으로 개월 수가 계산된다. MONTHS_BETWEEN의 예시 SELECT MONTHS_BETWEEN(SYSDATE, TO_DATE('2021/11/01', 'YYYY/MM/DD')) AS MONTH FROM DUAL /* SYSDATE = 2022-01-19 TO_DATE = 2021-11-01 MONTHS_BETWEEN = (2022/01/19) - (2021/11/01) = 2.5개월 */ 1. 소수점 절사(TRUNC) SELECT TRUNC(MONTHS_BETWEEN(SYSDATE,TO_DATE('2021-11-..
2022.10.17 -
값에 따라 결과 값을 RETURN하는 방식 SELECT CASE 컬럼 WHEN 값1 THEN 결과1 WHEN 값2 THEN 결과2 END AS 별칭 FROM 테이블명 조건에 따라 결과 값을 RETURN하는 방식 SELECT CASE WHEN 조건1 THEN 결과1 WHEN 조건 2 THEN 결과2 ELSE 그 외 결과 END AS 별칭 FROM 테이블명
[ORACLE] CASE값에 따라 결과 값을 RETURN하는 방식 SELECT CASE 컬럼 WHEN 값1 THEN 결과1 WHEN 값2 THEN 결과2 END AS 별칭 FROM 테이블명 조건에 따라 결과 값을 RETURN하는 방식 SELECT CASE WHEN 조건1 THEN 결과1 WHEN 조건 2 THEN 결과2 ELSE 그 외 결과 END AS 별칭 FROM 테이블명
2022.08.16 -
DECODE함수 : IF ELSE와 비슷한 기능을 수행한다. ( 최근에는 CASE WHEN 구문 사용을 많이 권장한다.) SELECT DECODE(컬럼, B, X, C, Y, Z) -- 컬럼 = B 이면 X, 컬럼 = C 이면 Y, 둘 다 아니면 Z FROM 테이블명 SELECT DECODE(컬럼, 'M', '남자', '여자') FROM 테이블명 -- 컬럼이 M 이면 남자 그게 아니면 여자(ELSE 부분은 생략 가능하며 조건이 없을 시 NULL)
[ORACLE] DECODE 함수DECODE함수 : IF ELSE와 비슷한 기능을 수행한다. ( 최근에는 CASE WHEN 구문 사용을 많이 권장한다.) SELECT DECODE(컬럼, B, X, C, Y, Z) -- 컬럼 = B 이면 X, 컬럼 = C 이면 Y, 둘 다 아니면 Z FROM 테이블명 SELECT DECODE(컬럼, 'M', '남자', '여자') FROM 테이블명 -- 컬럼이 M 이면 남자 그게 아니면 여자(ELSE 부분은 생략 가능하며 조건이 없을 시 NULL)
2022.08.16