DB 29

[MySQL] FIRST_VALUE()

FIRST_VALUE() 그룹 영역을 토대로 첫번째 값을 칼럼에 표시하는 함수이다. 즉, 조회된 세트(집합)에서 어떠한 상황에서도 첫 번째 값을 구하는 함수가 FIRST_VALUE이다. 주의해야 할 점은 OVER()에 ORDER BY 절을 꼭 삽입해야한다는 것이다. SELECT COL1, COL2, FIRST_VALUE(COL1) OVER(ORDER BY COL2) FROM TABLE_NAME SELECT COL1, COL2, FIRST_VALUE(COL1) OVER(PARTITION BY COL1 ORDER BY COL2) FROM TABLE_NAME https://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html#function_fi..

DB/MySQL 2023.01.18

[MySQL] IFNULL()

IFNULL() MySQL에서 해당 Column의 값이 NULL을 반환할 경우 다른 값으로 출력하고 싶다면 INFULL함수를 사용하면 된다. IF() 함수와 마찬가지로 익숙하다. 오라클의 NVL()정도로 생각해도 문제가 없을 것 같다. expr1이 NULL이면 expr2, 그렇지 않으면 expr1 을 return SELECT IFNULL(expr1, expr2) FROM 테이블명; SELECT IFNULL(Column명, "Null일 경우 대체 값") FROM 테이블명; https://dev.mysql.com/doc/refman/8.0/en/flow-control-functions.html#function_ifnull MySQL :: MySQL 8.0 Reference Manual :: 12.5 Flow..

DB/MySQL 2023.01.18

[MySQL] SUM() OVER()함수

순위함수(분석함수) 결과에 순번, 순위를 매기는 함수 비집계함수 중 RANK, NTILE, DENSE_RANK, ROW_NUMBER 등이 해당된다. SELECT (arguments) OVER ([PARTITION BY ] ORDER BY ) FROM 테이블명; PARTITION BY : 동일 그룹으로 묶어줄 칼럼 명 지정 ORDER BY : Partition 정의에 지정된 컬럼에 대한 정렬 수행 누적 합계 구하기 윈도우 함수와 SUM() 함수를 함께 사용해 누적 합계를 구할 수 있습니다. SELECT DATE(payment_date) AS dt, SUM(amount) FROM sakila.payment p GROUP BY dt ORDER BY dt ASC 해당 쿼리는 단순히 결제일시를 결제일로 변환하고 ..

DB/MySQL 2023.01.17

[MySQL] LAG() 함수

순위함수(분석함수) 결과에 순번, 순위를 매기는 함수 비집계함수 중 RANK, NTILE, DENSE_RANK, ROW_NUMBER 등이 해당된다. SELECT (arguments) OVER ([PARTITION BY ] ORDER BY ) FROM 테이블명; PARTITION BY : 동일 그룹으로 묶어줄 칼럼 명 지정 ORDER BY : Partition 정의에 지정된 컬럼에 대한 정렬 수행 LAG() 함수 LAG() 함수는 LEAD() 함수와 비슷합니다. 두 함수 모두 2개의 행 간의 차이를 구할 때 사용되곤 합니다. 두 함수의 차이점이라고 하면 LAG() 함수는 앞 행에서 값을 반환하고 LEAD() 함수는 뒷 행에서 값을 반환합니다. SELECT c.Code , c.Name , c.Continen..

DB/MySQL 2023.01.17

[MySQL] LEAD() 함수

순위함수(분석함수) 결과에 순번, 순위를 매기는 함수 비집계함수 중 RANK, NTILE, DENSE_RANK, ROW_NUMBER 등이 해당된다. SELECT (arguments) OVER ([PARTITION BY ] ORDER BY ) FROM 테이블명; PARTITION BY : 동일 그룹으로 묶어줄 칼럼 명 지정 ORDER BY : Partition 정의에 지정된 컬럼에 대한 정렬 수행 LEAD() 함수 분석 함수는 윈도우 함수의 다른 종류입니다. 해당 함수는 행 내에 있는 값을 반환할 때 사용되고, 그 행들은 주로 선행하는 행들이거나 후행하는 행들입니다. 분석 함수는 특정 열의 선행 혹은 후행하는 행 사이의 차이를 구할 때 상당히 용이합니다. LEAD라는 이름이 말해주듯이 해당 함수는 뒤에 있..

DB/MySQL 2023.01.17

[MySQL] ROW_NUMBER() 함수

순위함수(분석함수) 결과에 순번, 순위를 매기는 함수 비집계함수 중 RANK, NTILE, DENSE_RANK, ROW_NUMBER 등이 해당된다. SELECT (arguments) OVER ([PARTITION BY ] ORDER BY ) FROM 테이블명; PARTITION BY : 동일 그룹으로 묶어줄 칼럼 명 지정 ORDER BY : Partition 정의에 지정된 컬럼에 대한 정렬 수행 ROW_NUMBER() 함수 ROW_NUMBER() 함수입니다. 정말 간단한데 각 행에 연속적인 숫자를 부여합니다. 비록 ranking_score가 동점인 경우가 있더라도 동점을 무시하고 각 행마다 다른 순위를 부여합니다. -- 인구수가 많은 순서대로 랭킹 지정하기 SELECT c.*, ROW_NUMBER() O..

DB/MySQL 2023.01.17

[MySQL] DENSE_RANK() 함수

순위함수(분석함수) 결과에 순번, 순위를 매기는 함수 비집계함수 중 RANK, NTILE, DENSE_RANK, ROW_NUMBER 등이 해당된다. SELECT (arguments) OVER ([PARTITION BY ] ORDER BY ) FROM 테이블명; PARTITION BY : 동일 그룹으로 묶어줄 칼럼 명 지정 ORDER BY : Partition 정의에 지정된 컬럼에 대한 정렬 수행 DENSE_RANK() 함수 DENSE_RANK()는 RANK() 함수와 유사합니다. 하지만 RANK() 함수가 숫자를 뛰어넘었던 것에 반해 해당 함수는 숫자를 뛰어넘지 않고 순위를 부여합니다. -- 인구수가 많은 순서대로 랭킹 지정하기 SELECT c.*, DENSE_RANK() OVER(ORDER BY Pop..

DB/MySQL 2023.01.17

[MySQL] RANK() 함수

순위함수(분석함수) 결과에 순번, 순위를 매기는 함수 비집계함수 중 RANK, NTILE, DENSE_RANK, ROW_NUMBER 등이 해당된다. SELECT (arguments) OVER ([PARTITION BY ] ORDER BY ) FROM 테이블명; PARTITION BY : 동일 그룹으로 묶어줄 칼럼 명 지정 ORDER BY : Partition 정의에 지정된 컬럼에 대한 정렬 수행 RANK() 함수 해당 함수는 ORDER BY 문에서 정의한 순서에 따라 각 행에게 순위를 부여합니다. 순위는 숫자 1부터 시작해 순차적인 숫자를 부여합니다. RANK() 함수는 여러 행의 값이 동일한 일종의 동점인 상황이 발생하면 해당 동일한 값을 가진 행들에게 모두 같은 순위를 부여해 줍니다. 그리고 그다음으..

DB/MySQL 2023.01.17

[MySQL] 쿼리 작성 및 최적화

쿼리와 연관된 시스템 설정 SQL_MODE sql_mode라는 시스템 설정에는 여러 개의 값이 동시에 설정될 수 있는데, 몇 개만 보면 다음과 같다. STRICT_ALL_TABLES : 일반적인 MySQL에서는 저장하려는 값의 길이가 칼럼 길이를 넘어가더라도 경고만 발생시킨 후 초과한 부분을 자르고 저장한다. 이 옵션을 주면 경고가 아닌 에러를 발생시켜 칼럼 길이를 넘는 데이터를 저장하는 것을 막을 수 있다. STRICT_TRANS_TABLES : MySQL 서버는 칼럼 타입과 호환되지 않는 값을 저장하려고 할 때 최대한 변환해서 저장하려고 하나, 이 옵션을 주면 강제 변환하지 않고 에러를 발생시킨다. TRADITIONAL : 위 두 방법보다 조금 더 엄격한 방법으로 ANSI 표준 모드로 동작하도록 한다..

DB/MySQL 2022.11.22

[Oracle] 윈도우 10 오라클 19c 설치

※ 오라클은 2018년부터 네이밍 방식이 변경되었다. - ~12c : 메이저 버전 - 2018년 이후 : 출시 년도를 사용하는 명명법 사용. ※ 19c에서 c는 Clould를 의미한다. (8i(internet 환경 적용), 11g(그리드 컴퓨팅 기술 적용)) 1. 데이터 베이스 설치파일 다운로드 1) 다음 경로 중 한군데로 접속 https://www.oracle.com/database/technologies/oracle-database-software-downloads.html Database Software Downloads | Oracle Oracle Database Express Edition Previous Database Release Software Oracle Database 10.2, 11..

DB/Oracle 2022.11.15