오라클 5

오라클 PARTITION BY 데이터 나누기 사용법과 예시

PARTITION BY는 SQL에서 사용되는 구문 중 하나로, OVER 절과 함께 사용하여 데이터를 파티션으로 나눌 때 사용합니다. 일반적으로 데이터베이스에서 데이터를 처리할 때, 데이터를 조작하기 위해 일련의 쿼리를 작성하게 됩니다. 이때 PARTITION BY 구문은 데이터를 분할하여 다른 집계 함수를 적용하는 데 사용됩니다. 예를 들어, PARTITION BY 구문을 사용하여 특정 열에 대해 GROUP BY 구문과 유사한 기능을 수행할 수 있습니다. 이는 데이터를 열의 값에 따라 그룹화하여 특정 그룹 내의 집계 함수를 계산하는 데 사용됩니다. 아래는 PARTITION BY 구문의 간단한 예시입니다. SELECT name, age, salary, AVG(salary) OVER (PARTITION BY..

oracle 2023.03.17

오라클 Group by having 절 사용하기

Oracle에서 HAVING 절은 그룹 함수로 집계된 결과에 대한 조건을 지정하는 데 사용됩니다. 이를 통해 그룹 함수로 집계된 결과 중에서 특정 조건을 만족하는 그룹만을 조회할 수 있습니다. 다음은 "orders" 테이블에서 "order_date" 컬럼 값이 2022년인 주문 정보를 지역별로 그룹화하여 각 지역별 주문 총액이 10000 이상인 경우에 대한 쿼리입니다. SELECT region, SUM(total_amount) AS total_sales FROM orders WHERE order_date BETWEEN '2022-01-01' AND '2022-12-31' GROUP BY region HAVING SUM(total_amount) >= 10000; 위의 쿼리에서 "WHERE" 절은 "orde..

oracle 2023.03.07

Oracle ROWID 사용하기

Oracle ROWID는 Oracle 데이터베이스 테이블의 각 행에 대한 고유 식별자입니다. 16진수 문자열로 저장되며 테이블에서 특정 행을 빠르게 찾는 데 사용됩니다. ROWID는 기본 키 또는 고유 인덱스의 열 조합을 사용하는 것보다 테이블의 특정 행에 액세스하는 더 빠른 방법입니다. 그러나 테이블을 내보내고 가져오거나 행을 업데이트하면 ROWID가 변경될 수 있습니다. UPDATE employees SET salary = salary * 1.1 WHERE ROWID = 'AAACfZAAEAAAAASAAB'; DELETE FROM employees WHERE ROWID = 'AAACfZAAEAAAAASAAB ROWID는 시간이 지남에 따라 변경될 수 있으므로 기본 키 또는 고유 인덱스를 사용하여 프로..

oracle 2023.02.17

ORACLE 정렬함수의 종류와 활용 예시

오라클 정렬 함수는 데이터를 정렬할 때 사용합니다. 아래는 몇 가지 예시를 들어 설명해 드리겠습니다. RANK 데이터를 정렬하여 각 행에 대한 순위를 구합니다. 결과 집합의 행에 대한 고유 순위를 계산합니다. 순위는 동률이 있을 경우 같은 순위를 가집니다. 예를 들어, RANK(3,1,4,1,5) 결과는 3,1,2,1,4가 됩니다. SELECT employee_name, salary, RANK() OVER (ORDER BY salary DESC) as rank FROM employees; 이 쿼리는 employees 테이블에서 사원 이름, 급여, 급여를 기준으로 한 순위를 조회합니다. 순위는 급여가 높은 순으로 부여됩니다. DENSE_RANK RANK 함수와 비슷하지만, 같은 순위를 가진 행에 대해 같은..

oracle 2023.01.26

ORACLE select 월의 첫날, 마지막 날 조회하기

oracle select 문 조회시 월의 첫날, 마지막 날 구하기 자주 쓰는 만큼 간단하게 또는 좀 더 복잡하게도 가능할 것 같다. 여러가지 방법으로 가능하겠지만 아래처럼 해봤다. 2022-12-01"}"> --월의 첫날 01일 결과 : 2022-12-01 SELECT trunc (sysdate, 'MM') FROM dual 2023/01/01"}"> --다음 달의 첫날 결과 : 2023/01/01 SELECT add_months(trunc (sysdate, 'MM'),1) FROM dual 2023-01-01"}">--다음 달의 첫날 다른방법 결과 : 2023-01-01 SELECT trunc (sysdate+31, 'MM') FROM dual 2022/12/31"}"> --월의 마지막일 결과 : 20..

oracle 2022.12.30