DATA PROGRAMMING/SQL(18)
-
[SQL] SQL 서브쿼리 총정리
SQL에서 서브쿼리는 굉장히 중요한 도구이다. 쿼리를 작성할 땐 성능이 굉장히 중요한 요소인데 서브쿼리를 잘 활용하면 필요없는 조인 연산을 줄이거나, 두번에 걸쳐 쿼리를 작성해야 하는 등의 비효율을 줄일수 있다. SQL 서브쿼리 WHERE절 서브쿼리 WHERE절 서브쿼리에는 크게 서브쿼리에서 메인쿼리의 정보를 참고하는지 아닌지에 따라서 연관서브쿼리, 비연관서브쿼리로 나뉘고, 서브쿼리의 결과값이 하나의 값이면 단일값, 여러값이면 다중값, 여러행이면(여러 컬럼에 대한 정보이면) 다중행 서브쿼리가 된다. 예를 들어 SELECT A.EMP_NO, A.EMP_NM, A.DEPT_CD FROM TB_EMP A WHERE A.DEPT_CD = ( SELECT DEPT_CD FROM TB_EMP WHERE EMP_NO..
2023.09.06 -
[SQL] 그룹함수 총정리
그룹함수에는 ROLLUP, CUBE, GROUPING SETS 함수가 있는데 각각이 어떤 역할을 하고, 각각의 차이점은 무엇인지 특정한 상황에서 어떤 함수를 쓰는게 좋을지 생각해보자. SQL 그룹함수 ROLLUP 함수 1.소 그룹간의 소계를 계산한다. 2. GRUPING 컬럼을 통해 SUBTOTLA을 생성하는데 여기서 GROUPING 컬럼의 수가 N이면, N+1의 SSUBTOTAL이 생선된다. 3. ROLLUP함수 내의 인자의 순서가 바뀌면 결과도 바뀌게 된다.(ROLLUP함수는 계층 구조이기 때문이다.) 설명만 봐서는 이해가 쉽지 않기에 실습을 해보도록 하자 예제1 SELECT productLine, FLOOR(AVG(quantityInStock)) AS avgQuantity, FLOOR(AVG(buy..
2023.09.05 -
[SQL] 윈도우 함수 총정리
윈도우함수는 행과 행간의 관계에서 다양한 연산 처리를 할 수 있는 함수이다. 분석함수로 알려져 있으며 일반적으로 윈도우함수는 일반함수와 달리 중첩하여 호출 될 수는 없다. 윈도우 함수 윈도우 함수의 종류 순위관련함수 집계관련함수 행순서관련함수 그룹내 비율관련함수 순위관련함수 RANK() : 그룹내 순위를 알려줌 (동일값 동일 순위) ex) 1위, 2위, 2위, 3위 DENSE_RANK() : 그룹내 순위를 알려줌 (동일값 동일 순위) ex) 1위, 2위, 2위, 3위 ROW_NUMBER : 동일값이라도 무조건 순위를 정함 말그대로 행번호를 지정해 줌 사용 예시 RANK() over (partition by 부서 ORDER BY 생년월일) : 부서별로 묶어서 생년월일 순위를 알 수 있음 예제 1 SELEC..
2023.09.04 -
[SQL] 표준 SQL의 조인 연산 - FROM절 JOIN, 재귀 JOIN
FROM절 조인은 WHERE절 조인과 다르게 Inner Join, Natural join, Outer join, Cross join이 모두 가능하다. 재귀 JOIN은 순환적 관계를 이용해, 한 테이블에 적용하는 조인이다. 가장 대표적으로 직원 직원의 상급자를 검색하는 쿼리가 있다. SQL 조인 SQL FROM절 조인 여기서 자연조인(Natural join)은 두 테이블의 동일명 컬럼을 등가조인 해주는 연산이고, 외부 조인(Outer Join)은 조인에서 한쪽의 데이터가 없는 값까지 출력해 주는 연산, Cross join은 카티션 프로덕트 연산자이다. FROM절 조인은 대표적으로 using을 사용하거나 on을 사용하는 방법이 있는데 using은 두 테이블에서 똑같은 이름의 컬럼을 기준으로 조인할 때만 사용..
2023.09.02 -
[SQL] 표준 SQL의 조인 연산 - WHERE절 조인
표준 SQL에서는 WHERE절 조인과 FROM절 조인을 사용한다. 조인연산은 '관계형데이터베이스'를 다룰 때 핵식적인 역할을 하는 개념이기 때문에 더 주의 깊게 공부를 해야겠다는 생각이 든다. 표준 SQL 조인 WHERE절 조인 기본적으로 where절 조인에서는 INNER JOIN만 가능하다. 예제1 SELECT o.orderNo, o.status, count(d.orderNo) '상품수', sum(d.priceEach*d.quantity) FROM s_orders o, s_orderdetails d WHERE o.orderNo = d.orderNo AND o.status 'Cancelled' GROUP BY d.orderNo ORDER BY count(d.orderNo) DESC, sum(d.price..
2023.09.01 -
[SQL] sql tip - count함수를 활용하여 NULL값 처리하기
count함수는 집계함수의 한 종류이다. 집계함수(sum, min, mas 등)은 NULL값의 데이터는 무시하고 집계하는 특성이 있지만, count의 경우엔 NULL까지 포함해서 집계할수 있다. SELECT SUM(NUM), AVG(NUM), MAX(NUM), MIN(NUM) AS SUM_NUM FROM ( SELECT NULL AS NUM FROM DUAL UNION ALL SELECT 10 AS NUM FROM DUAL UNION ALL SELECT 20 AS NUM FROM DUAL UNION ALL SELECT 30 AS NUM FROM DUAL UNION ALL SELECT 40 AS NUM FROM DUAL ) 여기서 각각의 집계함수는 NULL값은 무시한채로 집계한 것을 알수있다. 또한, or..
2023.09.01