Table1에 1일 부터 31일 까지 데이타가 있다고 할대
select day1, sum(금액) from Table1 group by day1
이 쿼리문에서 가장 큰 값과 가장 작은 값을 쿼리문 에서 조회 할수가 있을까요?
지금은 다시 임시테이블에 받아두고 MAX, MIN 값을 추출합니다.
select day1, sum(금액), 쿼리된결과중에서 가장큰값, 쿼리된결과중에서 가장작은값 from Table1 group by day1
이런식으로 추출할려고 합니다.
서브쿼리로 Left 조인해서 추출할수 있지만 다른 방법도 있을것 같아 질문드립니다.
감사합니다,
수고하세요.
Comment 4
-
건우아빠
2014.09.19 11:51
-
항해자™
2014.09.20 12:52
윈도우 함수 공부 좀 해야되겠네요^^ -
철스
2014.09.19 11:58
ROLLUP
SELECT
ISNULL(YMD,
CASE WHEN GROUPING(YMD) = 0 THEN '' ELSE 'ALL' END)
AS YMD,
SUM(GUM), MIN(GUM), MAX(GUM)
FROM (
SELECT '2014-09-01' AS YMD, 10 AS GUM UNION ALL
SELECT '2014-09-01' AS YMD, 11 AS GUM UNION ALL
SELECT '2014-09-01' AS YMD, 12 AS GUM UNION ALL
SELECT '2014-09-02' AS YMD, 20 AS GUM UNION ALL
SELECT '2014-09-03' AS YMD, 30 AS GUM UNION ALL
SELECT '2014-09-04' AS YMD, 40 AS GUM UNION ALL
SELECT '2014-09-05' AS YMD, 50 AS GUM UNION ALL
SELECT '2014-09-06' AS YMD, 60 AS GUM UNION ALL
SELECT '2014-09-07' AS YMD, 70 AS GUM
) AS A
GROUP BY ROLLUP(YMD) -
희망나라
2014.09.19 17:31
답변감사합니다.
with
res1 as (
select 1 day1,1 금액 union all
select 6 ,2 union all
select 1 ,3 union all
select 4 ,4 union all
select 1 ,5 union all
select 2 ,6 union all
select 4 ,7 union all
select 1 ,8 union all
select 3 ,9 union all
select 1 ,0 union all
select 2 ,11 union all
select 1 ,12 ),
res2 as (
select * , '1' gb
from res1 ) ,
result as (
select day1, 금액
, MAX(금액) over (partition by GB ) maxno
, MIN(금액) over (partition by GB ) minno
from res2
)
select day1
, SUM(금액) day1별합계
, MAX(금액) day1별최대
, MIN(금액) day1별최소
, maxno 전체최대
, minno 전체최소
from result
group by day1 , maxno , minno