Teradata的OLAP函数使用(3),
5,剩余视窗聚合(就是除去选中的)
SELECT
salesdate
,itemid
,sales
,SUM(sales) OVER (ORDER BY salesdate ASC ROWS BETWEEN CURRENT ROW AND unbounded following) AS "AMsum"
,CAST((AMsum - sales)AS DECIMAL(6,2)) AS "excl. current"
,SUM(sales) OVER (ORDER BY salesdate ASC ROWS BETWEEN 1 following AND unbounded following) AS "AM1sum"
FROM daily_sales
ORDER BY salesdate ASC
结果如下:
salesdate itemid sales AMsum excl. current AM1sum ======== ===== ===== ====== ========= ========== 1997-01-01 10 350.00 4100.00 3750.00 3750.00 1997-01-02 10 100.00 3750.00 3650.00 3650.00 1997-01-03 10 250.00 3650.00 3400.00 3400.00 1997-01-05 10 350.00 3400.00 3050.00 3050.00 1997-01-10 10 450.00 3050.00 2600.00 2600.00 1997-01-21 10 250.00 2600.00 2350.00 2350.00 1997-01-25 10 300.00 2350.00 2050.00 2050.00 1997-01-31 10 100.00 2050.00 1950.00 1950.00 1997-02-01 10 550.00 1950.00 1400.00 1400.00 1997-02-03 10 350.00 1400.00 1050.00 1050.00 1997-02-06 10 150.00 1050.00 900.00 900.00 1997-02-17 10 250.00 900.00 650.00 650.00 1997-02-20 10 500.00 650.00 150.00 150.00 1997-02-27 10 150.00 150.00 .00 ?
BETWEEN CURRENT ROW AND unbounded following:当前行到记录结束的所以行
BETWEEN 1 following AND unbounded following :从下面一条到最后一条记录的
unbounded :不限制(后一般跟着 PRECEDING:前面的记录 following:接下来的记录 )
6,排队
SELECT
itemid
,salesdate
,sales
,RANK() OVER (ORDER BY sales DESC)
FROM daily_sales_2004
WHERE salesdate BETWEEN DATE '2004-01-01‘ AND DATE '2004-03-01’
结果如下
itemid salesdate sales Rank(sales)
-------- ------------- ----------- -----------------
10 04/01/10 550.00 1
10 04/02/17 550.00 1
10 04/02/20 450.00 3
10 04/02/06 350.00 4
10 04/02/27 350.00 4
10 04/01/05 350.00 4
10 04/01/03 250.00 7
10 04/02/03 250.00 7
10 04/01/25 200.00 9
10 04/01/02 200.00 9
10 04/01/21 150.00 11
10 04/02/01 150.00 11
10 04/01/01 150.00 11
10 04/01/31 100.00 14
Rank()的如果重复记录的队列会相同。接下来会奖行号,这个不会重复。
7.行号
SELECT itemid, salesdate, sales,
ROW_NUMBER() OVER (ORDER BY sales DESC)
FROM daily_sales_2004
WHERE salesdate BETWEEN DATE '2004-01-01' AND DATE '2004-03-01’
结果如下
itemid salesdate sales Row_Number()
----------- ------------- ----------- ---------------------
10 04/01/10 550.00 1
10 04/02/17 550.00 2
10 04/02/20 450.00 3
10 04/02/06 350.00 4
10 04/02/27 350.00 5
10 04/01/05 350.00 6
10 04/01/03 250.00 7
10 04/02/03 250.00 8
10 04/01/25 200.00 9
10 04/01/02 200.00 10
10 04/01/21 150.00 11
10 04/02/01 150.00 12
10 04/01/01 150.00 13
10 04/01/31 100.00 14
看见了吧,行号是连续的。
本站文章为和通数据库网友分享或者投稿,欢迎任何形式的转载,但请务必注明出处.
同时文章内容如有侵犯了您的权益,请联系QQ:970679559,我们会在尽快处理。