因为该列没有包含在聚合函数或 group by 子句中。_sql serve 2012之,聚合函数的over子句...

/*

dd7f235830b688178e603004a35aa544.png

100万行的一个例子

IF OBJECT_ID(N'dbo.t') IS NOT NULL
    DROP TABLE dbo.t;
GO
CREATE TABLE dbo.t
(
    i BIGINT IDENTITY(1, 1) PRIMARY KEY,
    d MONEY
);
INSERT t
(
    d
)
SELECT TOP 1000000
       ROUND(10000 * RAND(CHECKSUM(NEWID())), 2)
FROM sys.all_objects AS a
    CROSS JOIN sys.all_objects;
go
WITH cte_a
AS
( SELECT a.i,
         a.d,NTILE(100000) OVER (ORDER BY i) AS group_no FROM dbo.t AS a
)
SELECT a.i,
       a.d,
       a.group_no,
	   SUM(d) OVER (ORDER BY i) AS 全局内至本行累计和,
	   SUM(d) OVER (PARTITION BY a.group_no ORDER BY i) AS 组内至本行累计和,
	   SUM(d) OVER (PARTITION BY a.group_no) AS 组内和,
	   AVG(1.0*d) OVER (ORDER BY i) AS 全局内至本行移动平均,
	   AVG(1.0*d) OVER (PARTITION BY a.group_no ORDER BY i) AS 组内至本行移动平均,
	   AVG(1.0*d) OVER (PARTITION BY a.group_no) AS 组内平均值
	   FROM cte_a AS a
ORDER BY i

deeff0f412cd6a1c3409f1b469b7c0ef.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值