본문 바로가기
반응형

DataBase62

[SQL] LAG, LEAD 함수 --15)LAG, LEAD 함수 --특정 집합 내에서 결과 건수의 변화 없이 해당 집합안에서 특정 컬럼의 이전 행의 값 혹은 다음행의 값을 구한다. --LAG 함수 - 이전 행의 값을 찾는다. SELECT A.proudct_name, B.GROUP_NAME, A.PRICE, LAG(A.PRICE,1) OVER( --PRICE의 이전 행의 값을 구한다. PARTITION BY B.GROUP_NAME ORDER BY A.PRICE) AS PREV_PRICE,--GROUP_NAME 컬럼 기준으로 PRICE컬럼으로 정렬한 값중에서 A.PRICE - LAG(PRICE,1) OVER( --현재형의 PRICE에서 이전행의 PRICE를 뺀다. PARTITION BY GROUP_NAME ORDER BY A.PRICE) .. 2021. 9. 15.
[postgreSQL] FIRST_VALUE, LAST_VALUE 함수 --14)FIRST_VALUE, LAST_VALUE 함수 --특정 집합내에서 결과 건수의 변화 없이 해당 집합안에서 특정 컬럼의 첫번째 값 혹은 마지막 값을 구하는 함수 --FIRST_VALUE select A.PRODUCT_NAME, B.GROUP_NAME, A.PRICE, FIRST_VALUE(A.PRICE) over (partition by B.GROUP_NAME order by A.PRICE) as LOWEST_PRICE_PER_GROUP from PRODUCT a inner join PRODUCT_GROUP b on (A.GROUP_ID = B.GROUP_ID); --GROUP_NAME 기준 PRICE가 가장 작은 값 출력 --LAST_VALUE --LAST_VALUE 함수에는 "range be.. 2021. 9. 15.
[postgreSQL] ROW_NUMBER, RANK, DENSE_RANK함수 --13)ROW_NUMBER, RANK, DENSE_RANK함수 --특정 집합 내에서 결과 건수의 변화 없이 해당 집합안에서 특정 컬럼의 순위를 구하는 함수 --ROW_NUMBER 함수 - 무조건 1,2,3,4,5... --같은 순위가 있어도 무조건 순차적으로 순위를 매긴다.(1,2,3,4,5..순으로) select A.PRODUCT_NAME, B.GROUP_NAME, A.PRICE, ROW_NUMBER() over (partition by B.GROUP_NAME order by A.PRICE DESC) from PRODUCT a inner join PRODUCT_GROUP b on (A.GROUP_ID = B.group_ID); --RANK 함수 - 같은 순위면 같은 순위면서 다음 순위 건너뜀 1,1,.. 2021. 9. 15.
[postgreSQL] [분석함수] AVG() --11)분석함수 --특정 집합 내에서 결과 건수의 변화 없이 해당 집합안에서 합계 및 카운트 등을 계산 할 수 있는 함수 --집계함수의 한계 select COUNT(*)--집계함수는 집계의 결과만을 출력 from product p ; --분석 함수는 집계의 결과 및 집합(테이블의 내용)을 함께 출력한다. select COUNT(*) OVER(), A.* from product A; ---------------------------------------------------------- --12)AVG()함수 --분석함수 AVG() 부터 본격적으로 분석함수를 학습한다. --그전에 분석함수의 문법에 대해서 간략히 알고 넘어간다. --분석 함수 문법 select C1, 분석함수(C2,C3,...) over .. 2021. 9. 15.
[postgreSQL] [그룹함수] GROUPING SETS, ROLLUP, CUBE --8)GROUPING SET절 --여러개의 UNION ALL을 이용한 SQL과 같은 결과를 도출할 수 있다. select C1, C2, 집계함수(C3) from TABLE_NAME group by grouping sets (--grouping set절을 이용하면 한번에 다양한 기준의 컬럼 조합으로 집계를 구할 수 있다. (C1, C2), (C1), (C2), (), ); select BRAND, SEGMENT, SUM(QUANTITY) from sales s group by grouping sets ( (BRAND,SEGMENT),--BRAND, SEGMENT컬럼 기준으로 합계를 구한다. (BRAND),--BRAND컬럼 기준으로 합계를 구한다. (SEGMENT),--SEGMENT컬럼 기준으로 합계를 구.. 2021. 9. 15.
[postgreSQL] ANY 연산자, ALL 연산자,EXISTS 연산자 --6)ANY 연산자 --값을 서브 쿼리에 의해 반환된 값 집합과 비교한다. ANY 연산자는 서브쿼리의 값이 어떠한 값이라도 --만족을 하면 조건이 성립된다. SELECT TITLE, LENGTH FROM FILM F WHERE LENGTH >= ANY--영화 분류별 사영시간이 가장 긴 영화의 제목 (--및 상영시간을 구함. SELECT MAX(LENGTH)--영화 분류별 상영시간이 가장 긴 상영시간을 구함 FROM FILM A, FILM_CATEGORY B WHERE A.FILM_ID = B.FILM_ID GROUP BY B.CATEGORY_ID ); --ANY가 없다면?SQL에러가 발생한다. --이경우에 서브쿼리의 반환되는 집합은 단 한건이어야 한다. SELECT TITLE, LENGTH FROM F.. 2021. 9. 15.
반응형