SQL 查询实时平均值

wuxi883 2018-05-21 01:19:21
原表如下:
表名为“A”

表的数据是不断更新的

想要的结果如下:


结果中新增的一列的值是VALUE的平均值,第一行平均值为62,第二行平均值是(27+62)/2=44.5,如此类推。
就是每增加一条记录,就对查询所有VALUE的平均值。

求大神赐教啊。
...全文
557 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuxi883 2018-05-21
  • 打赏
  • 举报
回复
引用 3 楼 sinat_28984567 的回复:
[quote=引用 2 楼 wuxi883 的回复:] [quote=引用 1 楼 sinat_28984567 的回复:]
--测试数据
if not object_id(N'Tempdb..#T') is null
	drop table #T
Go
Create table #T([TIME] DATETIME,[VALUE] FLOAT)
Insert #T
select N'2018/5/10 16:15:04',62 union all
select N'2018/5/10 16:16:37',27 union all
select N'2018/5/10 16:18:09',32
Go
--测试数据结束
SELECT *,
       (
           SELECT AVG(VALUE) FROM #T b WHERE b.[TIME] <= a.[TIME]
       ) AS 实时平均
FROM #T a;

谢谢版主,完美执行。 请问版主 SELECT *,(SELECT AVG(VALUE) FROM #T b WHERE b.[TIME] <= a.[TIME]) AS 实时平均 FROM #T a; 上面语句里,a.[TIME]是最后查询出来的表里面的,应用到了创建这个表的过程去了。 像这样的语句有什么叫法吗?我想查一下这个的具体用法。[/quote] 百度 “sql 子查询”试试[/quote] 找到了,非常感谢!
二月十六 2018-05-21
  • 打赏
  • 举报
回复
引用 2 楼 wuxi883 的回复:
[quote=引用 1 楼 sinat_28984567 的回复:]
--测试数据
if not object_id(N'Tempdb..#T') is null
	drop table #T
Go
Create table #T([TIME] DATETIME,[VALUE] FLOAT)
Insert #T
select N'2018/5/10 16:15:04',62 union all
select N'2018/5/10 16:16:37',27 union all
select N'2018/5/10 16:18:09',32
Go
--测试数据结束
SELECT *,
       (
           SELECT AVG(VALUE) FROM #T b WHERE b.[TIME] <= a.[TIME]
       ) AS 实时平均
FROM #T a;

谢谢版主,完美执行。 请问版主 SELECT *,(SELECT AVG(VALUE) FROM #T b WHERE b.[TIME] <= a.[TIME]) AS 实时平均 FROM #T a; 上面语句里,a.[TIME]是最后查询出来的表里面的,应用到了创建这个表的过程去了。 像这样的语句有什么叫法吗?我想查一下这个的具体用法。[/quote] 百度 “sql 子查询”试试
wuxi883 2018-05-21
  • 打赏
  • 举报
回复
引用 1 楼 sinat_28984567 的回复:
--测试数据
if not object_id(N'Tempdb..#T') is null
	drop table #T
Go
Create table #T([TIME] DATETIME,[VALUE] FLOAT)
Insert #T
select N'2018/5/10 16:15:04',62 union all
select N'2018/5/10 16:16:37',27 union all
select N'2018/5/10 16:18:09',32
Go
--测试数据结束
SELECT *,
       (
           SELECT AVG(VALUE) FROM #T b WHERE b.[TIME] <= a.[TIME]
       ) AS 实时平均
FROM #T a;

谢谢版主,完美执行。 请问版主 SELECT *,(SELECT AVG(VALUE) FROM #T b WHERE b.[TIME] <= a.[TIME]) AS 实时平均 FROM #T a; 上面语句里,a.[TIME]是最后查询出来的表里面的,应用到了创建这个表的过程去了。 像这样的语句有什么叫法吗?我想查一下这个的具体用法。
二月十六 2018-05-21
  • 打赏
  • 举报
回复
--测试数据
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([TIME] DATETIME,[VALUE] FLOAT)
Insert #T
select N'2018/5/10 16:15:04',62 union all
select N'2018/5/10 16:16:37',27 union all
select N'2018/5/10 16:18:09',32
Go
--测试数据结束
SELECT *,
(
SELECT AVG(VALUE) FROM #T b WHERE b.[TIME] <= a.[TIME]
) AS 实时平均
FROM #T a;



22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧