SQL 32

[SQL] OVER

결과를 반환하면서, 집계/순위/이전값 비교 등을 할 때 활용하는 윈도우 함수집계 함수가 결과의 전체를 대상으로 계산하지 않고, 행에 대해 일정 범위 내에서만 계산 할 수 있게 함.SELECT COLUMN1, COLUMN2, AGGREGATE_FUNCTION(COLUMN3) OVER (PARTITION BY COLUMN1 ORDER BY COLUMN2)FROM MY_TABLE;PARTITION BY데이터를 그룹으로 나눈다(나누지 않을 시 결과 전체를 대상으로 계산)ORDER BY계산된 결과에 대한 정렬횔용 ① 집계함수를 쓰고싶은데, 그룹바이 하긴 싫을 때 OVER()을 활용할 수 있다.-- 그룹화 하지 않으면 에러가 남(단일 그룹의 그룹함수가 아닙니다)SELECT DEPARTMENT_ID, SA..

SQL 2025.07.23

[SQL] SUB-QUERY 서브쿼리

한 SQL 문장 안에서 보조로 사용되는 또다른 SELECT 문- SELECT, FROM, WHERE절 모두에 사용 가능 - INSERT, UPDATE, DELET, MERGE 문에서 사용 가능WHERE절 예시-- 전 사원의 평균 급여 이상을 받는 사원 수의 조회-- WHERE절에 사용하려면 데이터 디멘션을 같게 맞춰야한다~SELECT COUNT(*) FROM EMPLOYEESWHERE SALARY >= (SELECT AVG(SALARY) FROM EMPLOYEES);-- PARENT_ID가 없는 부서에 속한 사람의 수는?SELECT COUNT(*) FROM EMPLOYEESWHERE DEPARTMENT_ID IN (SELECT DEPARTMENT_ID FROM ..

SQL 2025.07.18

[SQL] ANY

# ANY : 서브쿼리 결과 중 하나만 만족하면 TRUE 반환--ANYSELECT EMP_NAME, EMPLOYEE_ID FROM employeesWHERE EMPLOYEE_ID = ANY (101, 104,203,401);-- IN과 같은 결과값을 낸다SELECT EMP_NAME, EMPLOYEE_ID FROM employeesWHERE EMPLOYEE_ID IN (101, 104,203,401); ** IN과 ANY의 차이는 무엇일까?요약 : IN은 목록안에 있는 항목과 정확히 일치하면 TRUE 반환, ANY는 주로 비교연산자와 함께 사용되며, 서브쿼리 결과 중 하나만 만족하면 TRUE 반환항목 INANY비교 대상정적인 값 목록 또는 서브쿼리 결과서브쿼리 결과사용되는 연산자==, >, =..

SQL 2025.07.17

[SQL] GROUP BY, HAVING, ROLLUP, GROUPING SETS

# GROUP BY데이터를 그룹으로 묶어 집계 함수(Aggregate Functions)를 사용할 수 있게 하는 구문데이터의 디멘션을 줄여주는 소중한 기능이다!SELECT DEPARTMENT_ID, AVG(SALARY)FROM EMPLOYEESGROUP BY DEPARTMENT_ID;집계 함수설명COUNT()그룹 내 포함된 행의 개수SUM()그룹 내 칼럼의 총 합AVG()그룹 내 평균 값MAX()그룹 내 최대값MIN()그룹 내최소 SELECT DEPARTMENT_ID, COUNT(*) AS EMP_COUNT, SUM(SALARY) AS TOTAL_SALARY, ROUND(AVG(SALARY)) AS AVG_SALARY, MAX(SALA..

SQL 2025.07.17

[ORACLE] 문자함수

기준은 ORACLE함수설명UPPER(char)전체 문자열 대문자로 변환LOWER(char)전체 문자열 소문자로 변환INITCAP(char)문자열의 첫 글자를 대문자, 나머지 글자는 소문자로 변환*첫 문자 인식 : 공백과 알파벳(숫자 포함)을 제외한 문자CONCAT(char1,char2)문자열 붙여서 반환 ( '||'와 동일한 기능)SUBSTR(char,pos,len)문자열(char)의 pos번째 문자부터 len길이만큼 잘라낸 결과 반환EX) SUBSTR('ABCDEFG',1,4) -> ABCD※ 유사예시 SUBSTRB(char,pos,len)는 len BYTE만큼 잘라서 반환※ pos 즉 인덱스는 1부터 시작한다~!!!!! 헷갈리지 말 것 끝에서부터 센다면 -1부터LTRIM(char,set), ..

SQL 2025.07.16

[ORACLE] 다중 INSERT

MYSQL은 VALUES 뒤에 계속 붙여주면* 다중 INSERT가 되지만, 오라클에서는 사용 할 수 없다.* INSERT INTO 테이블명 (컬럼1, 컬럼2) VALUES ('값1','값2'), ('값1','값2'), ('값1','값2');# 방법 1-- 테이블 생성CREATE TABLE EX4_1( PHONE_NUM VARCHAR(20));-- 다중 INSERTINSERT ALLINTO EX4_1 VALUES('111-1111')INTO EX4_1 VALUES('111-2222')INTO EX4_1 VALUES('111-3333')INTO EX4_1 VALUES('033-3333')SELECT * FROM DUAL;-- 4개 행 이(가) 삽입되었습니다.# 방법 2 INSERT ALL IN..

SQL 2025.07.16

[ORACLE] 숫자함수

기준은 ORACLE함수설명ABS(n)절대값 반환 함수CEIL(n)매개변수 이상의 숫자 중 가장 작은 정수 반환 함수(올림)FLOOR(n)매개변수 이하의 숫자 중 가장 큰 정수를 반환(내림)ROUND(n,i)매개변수 n을 소수점 기준 i+1번째에서 반올림한 값을 반환TRUNC(n1,n2)n1을 소수점 기준 n2자리에서 버림한 값을 반환POWER(n2,n1)n2를 n1 제곱한 값 반환, 단 n2가 음수이면 n1은 정수만 가능SQRT(n)n의 제곱근, n은 0 또는 양수(음수가 아닌 수)MOD(n2,n1)n2를 n1으로 나눈 나머지 반환REMAINDER(n2,n1)n2를 n1으로 나눈 나머지 반환EXP(n)자연상수 e의 n제곱LN(n)loge​(n) // 자연로그 loge​ LON(n2,n1)logn2​(n..

SQL 2025.07.16

[SQL] IN과 EXISTS

IN과 EXISTS모두 WHERE절에서 조건식으로 사용한다.# IN : 조건절에 명시한 값이 포함된 건을 반환# EXISTS : IN과 유사하지만, 후행 조건절에 서브쿼리가 오고, 서브쿼리 내에서 JOIN이 포함되어있어야 한다.SELECT DEPARTMENT_ID, DEPARTMENT_NAMEFROM DEPARTMENTS AWHERE EXISTS (SELECT * FROM EMPLOYEES B WHERE A.DEPARTMENT_ID = B.DEPARTMENT_ID AND B.SALARY > 10000)ORDER BY A.DEPARTMENT_ID ASC;=> 서브쿼리를 확인하고, 그 결과가 존재하면(TRUE라면) 메인쿼리 실행즉 EXISTS..

SQL 2025.07.16

[ORACLE] 오라클에서의 NULL

# NULL 관련 함수함수설명NVL(expr1,expr2)expr1이 NULL이 아니면 expr1, NULL이면 expr2 반환NVL2(expr1,expr2,expr3)expr1이 NULL이 아니면 expr2, NULL이면 expr3 반환COALESCE(expr1,expr2,...)매개변수 expr 중에서 NULL이 아닌 첫번째 expr 반환 LNNVL(조건식)조건식의 결과가 FALSE 또는 UNKNOWN이면 TRUE, TRUE이면 FALSE를 반환NULLIF(expr1,expr2)expr1 = expr2 이면 NULL 반환, 같지 않으면 expr1 반환/* NULL 관련 함수 */-- NVL 예시SELECT MANAGER_ID, EMPLOYEE_ID, NVL(MANAGER_ID, EMPL..

SQL 2025.07.16
반응형