일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 스프링
- kotlin
- 생성
- jquery
- Vue
- aws
- Java
- 시큐리티
- GitHub
- 쿼리
- JPA
- oracle
- db
- Spring
- 방법
- 알고리즘
- 프로그래머스
- 넥사크로
- JavaScript
- mybatis
- Git
- 코틀린
- error
- Security
- 자바
- 함수
- 오라클
- Eclipse
- IntelliJ
- 에러
- Today
- Total
목록DB/쿼리 (12)
송민준의 개발노트
시작일 : 20201001 가정 종료일 : 20201031 가정 SELECT TO_CHAR(TRUNC(TO_DATE('20201001'), 'DD') + LEVEL - 1, 'YYYYMMDD') DAYS FROM DUAL CONNECT BY LEVEL
비율을 계산해주는 함수는 다음과 같다. 1. CUME_DIST 2. PERCENT_RANK 3. NTILE 4. RATIO_TO_REPORT 1. CUME_DIST - 파티션 전체 건수에서 현재 행보다 작거나 같은 건수에 대해 누적 백분율을 계산해주며 0과 1사이에 값이 분포해있다. select deptno, ename, sal, cume_dist() over(order by sal desc) as c_s from emp; 위 쿼리를 실행하면 백분율 처럼 나온다. 과거 학창시절 성적 백분율 나오는 그런거... 2. PERCENT_RANK - ANSI/ISO SQL 표준과 Oracle DBMS에서 지원해준다. - 파티션에서 제일 먼저 나온 것을 0, 제일 늦게 나온 것을 1로 하여 값이 아닌 행의 순서별 ..
쿼리를 다루다보면 특정 행에 대해 다뤄야 할 때가 있다. 종류로는 1. FIRST_VALUE 2. LAST_VALUE 3. LAG 4. LEAD 위 4가지가 있다. 1. FIRST_VALUE : 파티션에서 가장 처음에 나오는 값을 구한다.(그룹함수 MIN과 같은 결과를 구할 수 있음) select deptno, sal, first_value(sal) over () as A, first_value(sal) over (partition by DEPTNO) as B, first_value(sal) over (partition by DEPTNO order by sal) as C, first_value(sal) over (partition by DEPTNO order by sal desc rows unbounde..
순위 함수의 목적은 어떤 항목이나 파티션에 대해서 순위를 계산하는 함수이다~! 우선 랭크 함수의 종류는 1. RANK : 특정항목 및 파티션에 대해 순위를 계산한다. 만약 값이 같다면 순위 또한 같게 주어진다. 2. DENSE_RANK : 같은 순위일 경우 하나의 건수로 계산을 한다. 3. ROW_NUMBER : 같은 순위일 경우에도 고유의 순위를 부여한다. 위 3가지가 존재한다. 목적에 따라 사용하면 된다. 1. Partition by 사용에 따른 결과 비교 select ename, sal, rank() over (order by sal desc) all_rank, rank() over (partition by job order by sal desc) job_rank from emp; 위 쿼리를 실행하..
개발을 하다보면 DB에 개행이 들어가야 되는 경우가 있다. \n 위와 같은 방법 말고 또 뭐가 있을까? 그렇다 방법은 존재한다. select '1번'||chr(13)||chr(10)||'2번' from dual 위와 같은 쿼리를 실행해보면 아래와 같은 결과가 나온다. 반대로 제거를 하고싶다면? select replace(개행 들어간 내용, chr(13)||chr(10), '') from dual 위와 같이 해보면 개행을 제거할 수가 있다. 원리는 아스키코드를 변환하는 것인데 chr(13)의 경우 현재 줄안에서 커서 위치를 맨 앞으로 옮기는 것이고 chr(10)의 경우 커서 위치를 아래로 가게 하는 것이다.(개행) 결과적으로 개행이 되는 것
기본적으로 쿼리를 짜다보면 b 테이블에 있는 값을 불러오든 처리해서 불러오든 가져와야 하는 경우가 있다. 프로시저를 짜는 것도 하나의 방법이지만 비효율적이고 시간도 더 나오는 것 같다.(테스트 해보니 최소 1.4배...?) update 문을 좀 더 활용해서 해보면 구조는 아래와 같다. update 테이블A a set (a.칼럼1, a.칼럼2, a.칼럼3) = (select sum(b.칼럼1) , sum(b.칼럼2) , sum(b.칼럼3) from 테이블B b where b.키값1 = a.키값1 and b.키값2 = a.키값2) where a.조건1 = '조건값1' and a.조건2 = '조건값2' 위 update 문에서 좀 더 좋은 방법은 아래와 같다.(시간 단축 튜닝) update ( select a...
자. 윈도우 함수란 무엇인가? 분석함수 중에서 윈도우절을 사용하는 함수를 뜻한다! 윈도우 함수를 사용해서 합계, 순위, 행 위치 등을 컨트롤 가능하다. 구조는 다음과 같다. SELECT 윈도우함수(파람) OVER(PARTITION BY 칼람 ORDER BY WINDOWING) - 윈도우 함수 구조 1. 파람 : 윈도우 함수에 따라 0~ 여러개의 파람을 가진다. 2. PARTITION BY : 전체 집합을 기준에 의해 소그룹으로 나눔 3. ORDER BY : 정렬 4. WINDOWING : 행 기준의 범위를 정함 1) ROWS : 부분집합인 윈도우 크기를 물리적 단위로 행의 집합을 지정 2) RANGE : 논리적인 주소에 의해 행 집합을 지정함 3) BETWEEN A AND B : A와 B 사이의 집합 4..
1. ROLLUP ROLLUP이란 GROUP BY를 한 칼람에 대하여 Subsum을 해준다. ROLLUP은 여러개의 컬럼에도 적용이 가능하다. 그리고 적용한 대상에는 null 값이 들어가는데 아래와 같이 활용이 가능하다. SELECT DECODE(DEPTNO, NULL, 'DEPT_SUM',DEPTNO), SUM FROM EMP GROUP BY ROLLUP(DEPTNO) 위 쿼리는 EMP테이블에 DEPTNO 별 Subsum이 포함이 되는 SUM을 보여준다.(물론 sum 함수를 써야함) 2개 이상을 활용할 경우 SELECT DECODE(DEPTNO, NULL, 'Allsum', DECODE(GRADE, NULL, 'Subsum', DEPTNO)), GRADE, SUM(SAL) FROM EMP GROUP B..