당신은 이런 식으로 작업을 수행 할 수 있습니다 조회 :
당신이 지수 붕괴를 적용하고자하는 파티션을 선택, 해당 그룹 내에서 날짜순으로 내림차순으로 정렬하십시오.
함수를 ROW_NUMBER() 함수를 사용하여 오름차순 정렬을 사용하여 각 하위 그룹 내에서 행 번호를 가져옵니다.
pow (your_variable_in_ [0,1], rownum)을 계산하여 결과에 적용하십시오.
SELECT <your_partitioning>, date, <whatever>*power(<your_variable>,rownum-1)
FROM (SELECT a.*
, ROW_NUMBER() OVER (PARTITION BY <your_partitioning> ORDER BY a.date DESC) AS rownum
FROM YOUR_TABLE a)
ORDER BY <your_partitioning>, date DESC
이
편집 : 내가 문제를 통해 다시 읽고 당신이 무엇을 요구 내가 지금 이해 생각
코드 (오라클 SQL 또는 DB2에서 작동 할 수 있습니다) 다음과 같을 수 왜냐하면 여기에 작용할 수있는 해결책이 있습니다 (부패 계수는 0.9입니다) :
SELECT product, sum(adjusted_views) // (i)
FROM (SELECT product, views*power(0.9, rownum-1) AS adjusted_views, date, rownum // (ii)
FROM (SELECT product, views, date // (iii)
, ROW_NUMBER() OVER (PARTITION BY product ORDER BY a.date DESC) AS rownum
FROM YOUR_TABLE a)
ORDER BY product, date DESC)
GROUP BY product
내부 SELECT 문 (III)이이
product views date rownum
--------------------------------------------------
a 1 2014-05-15 1
a 2 2014-05-14 2
a 2 2014-05-13 3
b 2 2014-05-10 1
b 3 2014-05-09 2
b 2 2014-05-08 3
b 1 2014-05-07 4
다음 쿼리처럼 보일 수 있습니다 임시 테이블을 생성한다 (II) 후, 지수 함수 적으로 감쇠 요인을 구성하는 ROWNUMBER를 사용하여 0.9^(ROWNUM-1)과 적용 보기로. 이 관심있는 수량 것으로 보인다 결과는 조정 된 뷰를 표현하는 마지막 단계 (외부 쿼리)에서
product adjusted_views date rownum
--------------------------------------------------
a 1 * 0.9^0 2014-05-15 1
a 2 * 0.9^1 2014-05-14 2
a 2 * 0.9^2 2014-05-13 3
b 2 * 0.9^0 2014-05-10 1
b 3 * 0.9^1 2014-05-09 2
b 2 * 0.9^2 2014-05-08 3
b 1 * 0.9^3 2014-05-07 4
이다. 그러나
주, 그 순서에 일정한 거리가 있어야합니다. 예를 들어, 항상 하루 (여기서는 하루가 아니라 한 달이 아닌데도 비슷한 방식으로 가중치가 적용되기 때문에)입니다.
'주문'을 알고 있습니까? –