본문 바로가기

Structured Query Language/Oracle SQL

(27)
Oracle SQL 기본_10 RANK : 특정 컬럼을 기준으로 한 순위 출력 함수 (ex. 성적 순위, 과목 석차, 월급 순위, 순위표 조회 등의 목적) 1. RANK 함수의 개념과 표현 ​ 1) RANK 함수의 개념 ​ RANK함수는 특정한 컬럼에 대하여 오름차순 또는 내림차순으로 순위를 매겨 컬럼의 형태로 표현하는 함수입니다. ​ - 학급에서의 성적 순위 - 회사에서의 급여 또는 실적 순위 - 고객의 포인트 또는 구매금액 순위 ... 그 외에도 순위를 매겨야 하는 다양한 상황에서 RANK 함수를 사용할 수 있습니다. 2) RANK 함수의 표현 ​ (1) 기본식 : 컬럼X를 기준으로 오름차순으로 순번을 매길 시 select 컬럼이름A, 컬럼이름B, ..., rank() over(order by 컬럼이름X) from 테이블이름; (..
Oracle SQL 기본_09 SELF JOIN(셀프 조인) : 1개 테이블 내에서 JOIN하여 가상으로 2개 테이블처럼 만들어 작업하기 (테이블 1개 JOIN) JOIN 기능은 주로 2개 이상의 테이블들로부터 필요한 자료를 불러와 한 개의 조회결과를 만드는 데 사용되곤 합니다. 하지만 종종 1개의 테이블 내에서 JOIN을 한 결과가 필요한 경우가 있습니다. ​ - 직원들 간에 위계 관계(상하관계)가 있고, 이것이 1개의 테이블의 같은 컬럼에 포함된 경우 - 1개 반 학생들이 2인 1조로 구성되어 있는 경우 - 음식점의 메뉴에 단품 메뉴와 세트메뉴가 함께 섞여 있는 구성인 경우 ... ​ 이러한 경우에 SQL에서 SELF JOIN으로 문제를 해결할 수 있습니다. ​ ​ 1. SELF JOIN의 개념과 표현 ​ 1) SELF JOIN의..
Oracle SQL 기본_08 LISTAGG : 컬럼의 레코드들을 전체 그대로, 또는 그룹별로 1개 칸 속에 나열하기 (LISTAGG WITHIN GROUP(ORDER BY ~ )) 1. LISTAGG 함수의 표현과 그 용도 ​ 1) LISTAGG 함수의 용도 ​ 특정 컬럼의 내용들을 1개 셀 안에 나열하고 싶을 때 LISTAGG 함수를 사용합니다. ​ - 레코드의 1개 칸(셀) 내에 전체 직원의 이름 또는 ID를 나열 - 또는, 부서별/직급별/성별로 전체 직원의 이름을 나열 ​ LISTAGG 함수는 개별 컬럼에 대해 사용할 수도 있고, GROUP BY 후 각 그룹별로도 사용할 수 있습니다. ​ 2) LISTAGG 함수의 표현 : 기본식의 예 ​ (1) 개별 컬럼에 대하여 : LISTAGG select listagg(컬럼이름B, '구..
Oracle SQL 기본_07 TO_CHAR (2) 숫자를 문자로 변환 : 천 단위 구분 쉼표 표시, 소수점 이하 표시, 달러($)·원(\) 표시, 빈 자리를 0으로 채우기 등 (형변환 함수) 데이터베이스에 저장된 각종 숫자 타입의 데이터(예 : 연봉, 월급, 수당, 소득, 지출 등) 중, 그 용도에 맞추어 적절하게 가공된 형태로 데이터를 조회해야 하는 경우가 있습니다. ​ - 연봉, 월급, 수당, 소득, 지출 등 돈(화폐)에 천의 자리 구분 기호(쉼표) 붙이기 - 숫자 앞에 달러($) 기호 붙이기 - N자리로 길이를 통일하고, 숫자 앞의 남는 자리는 0과 같은 기호로 채우기 - 정수(integer)가 있더라도, 일괄적으로 일정하게 소수점 아래 n째 자리까지 표시하게끔 하기 ... ​ 위와 같은 필요가 발생했다면,​ TO_CHAR 함..
Oracle SQL 기본_06 CASE 표현식 : 조건 충족 여부에 따라 설정한 값을 반환하는 조건변환, 범주별 분기함수 (* 타 프로그래밍 언어의 IF~THEN, IFELSE 대응) DECODE 함수의 경우 'A=B'이냐 'A≠B'이냐에 따라 분기가 발생하였기 때문에, 크거나 작은 범주 조건에 따라 분기가 발생하는 경우에는 사용하기에 까다로웠습니다. CASE 표현식은 다른 프로그래밍 언어의 IF ~ THEN 구문, IFELSE 구문처럼 범주별로 분기가 발생하는 조건에 대응할 수 있도록 해 줍니다. ex. - 주민등록번호 뒷자리 첫째자리가 1이면 남성, 2이면 여성으로 분류하여 표시하기 - 전화번호의 앞자리 지역번호에 따라 지역 표시하기 - 컬럼의 값을 특정한 범주로 나누어서 분류하기 ... ​ 이러한 경우 CASE - WHEN - ..
Oracle SQL 기본_05 LPAD, RPAD (1) 기본 : 문자열의 자릿수를 맞추어 Padding 문자로 공백 채우기 (ex. 코드 자릿수 맞추기, 특수문자로 채우기 등) 일정한 규칙 하에, 특정 컬럼의 데이터들을 각각 N개 글자가 되도록 통일하거나, 일정 기준에 모자라는 나머지 글자를 특정한 문자로 채워넣어 일정한 길이의 문자열로 만들어야 하는 경우가 있습니다. ​ 예를 들어, - 10, 020, 300, 054... 등으로 표기된 지역코드들을 '000XXX'와 같은 6자리 문자로 자릿수를 맞추어 표기하기 - 문자열 앞 또는 뒤에 지정한 문자를 덧붙여 일정한 길이의 문자열 결과로 만들기 ​ 이럴 때, 특정한 문자(Padding 문자)로 지정한 글자수까지 채워주는 기능을 수행하는 함수가 LPAD, RPAD 함수입니다. ​ * ..
Oracle SQL 기본_04 LIKE (2) : 응용 - 대소문자 구분 없이 '■로 시작하는', '■로 끝나는', '■를 포함한' ●자 글자 검색하기 (문자 검색) ​앞서 LIKE(1)에서 우리는 대소문자 구분 없이 특정한 문자가 포함된 문자열이 있는 레코드를 검색하려면, 두 개의 WHERE LIKE, 또는 두 개의 WHERE NOT LIKE 를 연결하여 검색했었습니다. 예시> hr 연습계정, employees 테이블에서 이름에 알파벳 E(또는 e)가 들어가는 직원을 검색하기 select * from employees where first_name like '%E%' or first_name like '%e%'; 일일히 대문자, 소문자의 경우를 고려하자니 번거롭습니다. ​ UPPER, LOWER, INITCAP 과 같은 함수 중 하..
Oracle SQL 기본_03 가상테이블 DUAL을 활용한 산술연산 DUAL은 오라클 SQL 디벨로퍼가 자체적으로 제공하는 가상의 테이블입니다. ​ DUAL을 이용하여, 우리는 간단한 산술연산 작업을 수행할 수 있습니다. 왜냐하면, Oracle SQL Developer에서 특정한 결과를 출력하려면, 명목상 SELECT FROM 구문의 형식을 따라야 하기 때문입니다. 1. 가상테이블 DUAL을 활용한 간단한 산술연산 1) 기본식 select 산술식1, 산술식2, ... from dual; 2) 예제 : 4+4 계산 select 4+4 from dual; 4+4의 결과값인 8이 출력되었습니다. 가상테이블 dual의 컬럼 이름이 입력한 문장의 산술연산식(4+4)으로 되어 있습니다. 3) 예제 : 여러 개의 산술연산 수행 여러 개의 산술연산..