SALE_HIST의 자료를 이용하여 사업장의 상품 판매금액과 아이템순으로 일자별 판매누적금액을 출력하시오
SELECT SALE_DATE, SALE_SITE, SALE_ITEM, SALE_AMT,
SUM(SALE_AMT) OVER (PARTITION BY SALE_DATE ORDER BY SALE_ITEM
ROWS UNBOUNDED PRECEDING) AS 누적합계
FROM SALE_HIST
SALE_HIST의 자료를 이용하여 사업장의 상품 판매금액과 일자순으로 아이템별 판매누적금액을 출력하시오
SELECT SALE_DATE, SALE_SITE, SALE_ITEM, SALE_AMT,
SUM(SALE_AMT) OVER (PARTITION BY SALE_ITEM ORDER BY SALE_DATE
ROWS UNBOUNDED PRECEDING) AS 누적합계
FROM SALE_HIST
SALE_HIST의 자료를 이용하여 사업장의 상품 판매금액과 일자와 아이템별 판매누적금액을 출력하시오
SELECT SALE_DATE, SALE_SITE, SALE_ITEM, SALE_AMT,
SUM(SALE_AMT) OVER (PARTITION BY SALE_ITEM, SALE_DATE ORDER BY SALE_AMT
ROWS UNBOUNDED PRECEDING) AS 누적합계
FROM SALE_HIST
SALE_HIST의 자료를 이용하여 ‘01 사업장‘ ’PENCIL’ 품목의 아이템별 판매금액과 누적 판매금액을 구하여라
SELECT SALE_DATE, SALE_SITE, SALE_ITEM, SALE_AMT,
SUM(SALE_AMT) OVER (PARTITION BY SALE_ITEM ORDER BY SALE_DATE
RANGE INTERVAL '5' DAY PRECEDING) AS 누적합계
FROM SALE_HIST
WHERE SALE_ITEM = 'PENCIL'
AND SALE_SITE = '01’
일자별 사업장별 매출액과 사업장별 매출액의 3일 이동평균 금액을 구하라 (SALE_HIST)
SELECT SALE_DATE, SALE_SITE, SUM(SALE_AMT),
ROUND(AVG(SUM(SALE_AMT)) OVER (PARTITION BY SALE_SITE ORDER BY SALE_DATE
RANGE INTERVAL '2' DAY PRECEDING) AS 이동평균
FROM SALE_HIST
GROUP BY SALE_DATE, SALE_SITE
EMP테이블에서 직속상관 MGR, 자기이름 ENAME, 자기급여 SAL 출력하여라 단, 같은 MGR별 직속부하들 중 최고 급여를 받는 사람들의 정보를 출력할 것
SELECT MGR, ENAME, SAL
FROM (SELECT MGR, ENAME, SAL,
MAX(SAL) OVER (PARTITION BY MGR) AS IV_MAX_SAL
FROM EMP)
WHERE SAL = IV_MAX_SAL;
A_TB의 자료를 이용하여 매월의 A_OUT과 분기별 누계를 구하시오
SELECT A_MON, A_OUT,
SUM(A_OUT) OVER (PARTITION BY TO_CHAR(TO_DATE(A_MON,'YYYYMM'),'Q')
ORDER BY TO_DATE(A_MON,'YYYYMM')
RANGE INTERVAL '2' MONTH PRECEDING) AS C1
FROM A_TB
TEST02의 20010901부터 20010911까지의 자료를 이용해 해당 일자 보다 작거나 같은 날의 환율을 순서대로 6개까기지 보여주는 QUERY를 만들어 보자
SELECT CDATE, AMT, CRATE
, LAG(CRATE,1) OVER (ORDER BY CDATE) AS "-1 DAY"
, LAG(CRATE,2) OVER (ORDER BY CDATE) AS "-2 DAY"
, LAG(CRATE,3) OVER (ORDER BY CDATE) AS "-3 DAY"
, LAG(CRATE,4) OVER (ORDER BY CDATE) AS "-4 DAY"
, LAG(CRATE,5) OVER (ORDER BY CDATE) AS "-5 DAY"
, LAG(CRATE,6) OVER (ORDER BY CDATE) AS "-6 DAY"
FROM TEST02
WHERE CDATE BETWEEN '20010901' AND '20010911’
TEST02의 20010901부터 20010911까지의 자료를 이용해 해당 일자 보다 크거나 같은 날의 환율을 순서대로 6개까기지 보여주는 QUERY를 만들어 보자
SELECT CDATE, AMT, CRATE
, LEAD(CRATE,1) OVER (ORDER BY CDATE) AS "+1 DAY"
, LEAD(CRATE,2) OVER (ORDER BY CDATE) AS "+2 DAY"
, LEAD(CRATE,3) OVER (ORDER BY CDATE) AS "+3 DAY"
, LEAD(CRATE,4) OVER (ORDER BY CDATE) AS "+4 DAY"
, LEAD(CRATE,5) OVER (ORDER BY CDATE) AS "+5 DAY"
, LEAD(CRATE,6) OVER (ORDER BY CDATE) AS "+6 DAY"
FROM TEST02
WHERE CDATE BETWEEN '20010901' AND '20010911'
TEST02 테이블을 이용해서 20010905부터 20010910까지 데이터를 출력하되 널값은 제외하고 출력하시오
현재일자의 금액에 전일 환율을 곱한 환산금액을 구하여 현재 일자, 현재 금액, 전일 환율, 환산금액을 출력하여라
SELECT C_DATE, C_AMT, 금일환율, 전일환율, 환산금액
FROM (SELECT CDATE C_DATE, AMT C_AMT, CRATE 금일환율
,LAG(CRATE,1) OVER(ORDER BY CDATE) AS 전일환율
,AMT*LAG(CRATE,1) OVER(ORDER BY CDATE) AS 환산금액
FROM TEST02
WHERE CDATE BETWEEN '20010904' AND '20010910'
)
WHERE 환산금액 IS NOT NULL
TEMP의 EMP_ID를 이용해 자신의 사번과 자신보다 한 단계 빠른 사번을 가진 직원의 사번과 성명을 보여주는 QUERY를 만들어라 ( LAG(), MIN(), MAX() 함수 활용을 생각해보자 )
SELECT EMP_ID, EMP_NAME
,LAG(EMP_ID,1) OVER (ORDER BY EMP_ID) AS 이전사원사번
,LAG(EMP_NAME,1) OVER (ORDER BY EMP_ID) AS 이전사원이름
FROM TEMP
,MIN(EMP_ID) OVER (ORDER BY EMP_ID
ROWS BETWEEN 1 PRECEDING
AND 1 PRECEDING) AS 전사원사번
,MAX(EMP_ID) OVER (ORDER BY EMP_ID
ROWS BETWEEN UNBOUNDED PRECEDING
AND 1 PRECEDING) AS 이전사원사번
TEMP의 자료를 이용하여 자신의 사번, 성명, SALARY를 읽고, 자신을 포함한 이후 사번 중 SALARY가 가장 큰 금액을 함께 보여라
SELECT EMP_ID, EMP_NAME, SALARY
,MAX(SALARY) OVER (ORDER BY EMP_ID
ROWS BETWEEN CURRENT ROW
AND UNBOUNDED FOLLOWING ) AS 이후최고금액
FROM TEMP
'IT_Web > Oracle' 카테고리의 다른 글
Oracle WINDOW 함수, 분석함수, 누적급여합계, 최고금액, 전일매출차액 출력 (0) | 2020.03.08 |
---|---|
Oracle 채번 5, 10사이에 있는 행의 사번 조회, 계층구조 전개 출력, LPAD 출력 (0) | 2020.03.08 |
Oracle DECODE, 열 데이터를 행으로 변경하기, 서브쿼리 연습문제 (0) | 2020.02.27 |
Oracle ROWNUM, 집계함수, DECODE, OUTER JOIN 연습문제 (0) | 2020.02.27 |
Oracle DECODE 활용법 (3) | 2020.02.27 |