SQL 61

NON-EQUI JOIN

조인조건절에 사용되는 컬럼의 값이 특정한 범위에 속할 때 사용하는 것이 NON-EQUI JOIN 이다. NON-EQUI JOIN 에서는 조인조건절에 = 을 사용하는 것이 아니라 between A and B 를 사용한다. --- SQL 1992 CODE --- ------------------------------------------ ------- 사원번호 사원명 연봉 세율 세율 ------------------------------------------ ------- employees 테이블 tbl_taxindex 테이블 [SQL 1992 CODE] select employee_id as 사원번호 , first_name || ' ' || last_name as 사원명 , nvl( E.salary + (..

SQL 2022.07.08

EQUI JOIN

---------- ***** EQUI JOIN (SQL 1992 CODE 방식) ***** ---------- [EQUI JOIN 의 예] 부서번호 부서명 사원번호 사원명 기본급여 -------- ========= ......................... department_id departments employees 테이블 select * from employees, departments where employees.department_id = departments.department_id; -- 이때 where 절을 join 조건절이라고 부른다. select E.department_id as 부서번호 -- 여기의 E. 만큼은 생략 불가 , D.department_name as 부서명 -- 아래..

SQL 2022.07.08

!!!!!!!!!!! 중요 JOIN 중요 !!!!!!!!!!!

JOIN(조인)은 테이블(뷰)과 테이블(뷰)을 합치는 것을 말하는데 행(ROW) 과 행(ROW)을 합치는 것이 아니라, 컬럼(COLUMN) 과 컬럼(COLUMN)을 합치는 것을 말한다. 위에서 말한 행(ROW) 과 행(ROW)을 합치는 것은 UNION 연산자를 사용하는 것이다. -- 면접 예상 질문 : INNER JOIN(내부조인) 과 OUTER JOIN(외부조인)의 차이점에 대해 말해보세요. -- 면접 예상 질문 : JOIN 과 UNION 의 차이점에 대해서 말해보세요. A = {1, 2, 3} 원소가 3개 B = {a, b} 원소가 2개 A ⊙ B = { (1,a), (1,b) ,(2,a), (2,b) ,(3,a), (3,b) } 데카르트곱(수학) ==> 원소의 곱 : 3 * 2 = 6개(모든 경우의..

SQL 2022.07.07

상관서브쿼리(== 서브상관쿼리)

상관서브쿼리(= 서브상관쿼리) 이라함은 Main Query(= 외부쿼리)에서 사용된 테이블(뷰)에 존재하는 컬럼이 Sub Query(=내부쿼리)의 조건절(where절, having절)에 사용되어질 때를 상관서브쿼리(= 서브상관쿼리) 라고 부른다. -- employees 테이블에서 기본급여에 대해 전체등수 및 부서내등수를 구하기 -- 첫번째 방법은 rank() 함수를 사용하여 구하는 것이다. select department_id as 부서번호 , employee_id as 사원번호 , salary as 기본급여 , rank() over( order by salary desc ) as 전체등수 , rank() over( partition by department_id order by salary desc) ..

SQL 2022.07.07

PairWise(쌍) Sub Query

Employees 테이블에서 부서번호별로 salary 가 최대인 사원과 부서번호별로 salary 가 최소인 사원의 부서번호, 사원번호, 사원명, 기본급여를 나타내기 select department_id, salary from employees order by 1, 2 desc; --------------------------- department_id salary --------------------------- 10 4400 20 13000 20 6000 30 11000 .... .... 30 2500 40 6500 50 8200 .... .... 50 2100 ==> 원하는 결과값 --------------------------- department_id salary ------------------..

SQL 2022.07.07

Sub Query (서브쿼리)에서 사용되는 ANY, ALL

Sub Query (서브쿼리)에서 사용되는 ANY 는 OR 와 흡사하고, Sub Query (서브쿼리)에서 사용되는 ALL 는 AND 와 흡사하다. -- [주의] 항상 구조 먼저 확인하고 null 값이 포함된 자료인지 확인. desc employees; -- employees 테이블에서 salary 가 30번 부서에 근무하는 사원들의 salary 와 동일한 사원들만 출력하기 -- 단, 30번 부서에 근무하는 사원은 제외. 30번 부서에 근무하는 사원들의 salary 목록 select salary from employees where department_id = 30; /* 11000 3100 2900 2800 2600 2500 */ 50,80번 부서의 사원들 중 30번 부서에 근무하는 사원들의 salar..

SQL 2022.07.07

Sub Query (서브쿼리)

------ ===== **** Sub Query (서브쿼리) **** ===== ------ -- Sub Query (서브쿼리) 란? select 문 속에 또 다른 select 문이 포함되어 있을 때 포함된 select 문을 Sub Query(서브쿼리)라고 부른다. select .... from .... ==> Main Query(메인쿼리 = 외부쿼리) where .... in (select ... from ...) ==> Sub Query (서브쿼리 = 내부쿼리) employees 테이블에서 기본급여가 제일 많은 사원과 기본급여가 제일 적은 사원의 정보를 사원번호, 사원명, 기본급여로 나타내기 select employee_id 사원번호 , first_name || ' ' || last_name 사원명..

SQL 2022.07.07

누적(누계)

----- ***** !!!!! 누적(누계)에 대해서 알아보기 !!!!! ***** ----- sum(누적되어야할 컬럼명) over(order by 누적되어질 기준이 되는 컬럼명 asc[desc] ) sum(누적되어야할 컬럼명) over(partition by 그룹화 되어질 컬럼명 order by 누적되어질 기준이 되는 컬럼명 asc[desc] ) --- *** tbl_panmae 테이블에서 '새우깡'에 대한 일별판매량과 일별누적판매량을 나타내기 *** --- select to_char(panmaedate, 'yyyy-mm-dd') AS 판매일자 , sum(panmaesu) AS 일별판매량 , sum( sum(panmaesu) ) over( order by to_char(panmaedate, 'yyyy-..

SQL 2022.07.07

having 그룹함수조건절

group by 절을 사용하여 그룹함수의 값을 나타내었을때 그룹함수의 값이 특정 조건에 해당하는 것만 추출하고자 할때는 where 절을 사용하는 것이 아니라 having 그룹함수조건절 을 사용해야 한다. ---- employees 테이블에서 사원이 10명 이상 근무하는 부서번호와 그 인원수를 나타내기 ---- select department_id 부서번호, count(*) 인원수 from employees group by department_id having count(*) >= 10 order by 2; ---- employees 테이블에서 부서번호별로 벌어들이는 salary 의 합계가 50000 이상인 부서에 대해서만 ---- 부서번호, 기본급여합계를 나타내기 ---- select department..

SQL 2022.07.07