一条SQL语句求前面记录的平均值
有算法要求如下:
For (i=1,i<=10,i++)
{
ta[i] = (t[1] + t[2] + ... + t[i]) / i;
}
用一条SQL语句实现它:
分别用表变量 @ta 和 @t 来对应 ta 和 t。
declare @t table(id int,d decimal(18,4));
declare @ta table(id int,da decimal(18,4)); insert into @t(id,d) values(1,1);
insert into @t(id,d) values(2,2);
insert into @t(id,d) values(3,3);
insert into @t(id,d) values(4,4);
insert into @t(id,d) values(5,5);
insert into @t(id,d) values(6,6);
insert into @t(id,d) values(7,7);
insert into @t(id,d) values(8,8);
insert into @t(id,d) values(9,9);
insert into @t(id,d) values(10,10); insert into @ta(id,da) values(1,0);
insert into @ta(id,da) values(2,0);
insert into @ta(id,da) values(3,0);
insert into @ta(id,da) values(4,0);
insert into @ta(id,da) values(5,0);
insert into @ta(id,da) values(6,0);
insert into @ta(id,da) values(7,0);
insert into @ta(id,da) values(8,0);
insert into @ta(id,da) values(9,0);
insert into @ta(id,da) values(10,0);
则有SQL语句:
with w(id,av) as(
select a.id,avg(b.d)
from
@ta a,@t b
where a.id>=b.id
group by a.id
)
update @ta set da=w.av
from @ta a inner join w on a.id=w.id;
=================================================
但是这种方法有很严重的性能问题。后面记录求前面所有记录的平均值,每条记录都要将前面的算一遍,而完全没有办法重用前面的计算结果,当列很多,记录也很多的情况下,耗时非常的长。
这个时候,老老实实用游标,用循环来算,搞一些变量来保存中间值,性能反而很好。
真让人感慨,都说SQL的强项不在循环,应该尽量用SQL语句来代替循环,但在这里,却恰好相反。兵无常势,水无常形,SQL的性能问题,也不是那么死板的。
一条SQL语句求前面记录的平均值的更多相关文章
- 一条SQL语句求每月连续低温时间
近期为某个项目写存储过程做统计.其中有个是这样的: 求每个月至少连续3个小时低于某个温度值的时间(小时). 假设有个全年温度表: CREATE TABLE #t(m INT, h INT ,t DEC ...
- 用一条SQL语句取出第 m 条到第 n 条记录的方法
原文:用一条SQL语句取出第 m 条到第 n 条记录的方法 --从Table 表中取出第 m 条到第 n 条的记录:(Not In 版本) * FROM Table id ...
- 使用传入的总记录数实现一条sql语句完成分页查询
使用传入的总记录数实现一条sql语句完成分页查询 问题:在传统的分页查询的实现中不可避免的需要两条sql语句,一条用于查询数据一条用于查询总记录数.如下面的实际代码所示: Img1 当然如果使 ...
- 一条SQL语句是如何执行的?--Mysql45讲笔记记录 打卡day1
写在前面的话:回想以前上班的时候,空闲时间还是挺多的,但是都荒废了.如今找工作着实费劲了.但是这段时间在极客时间买了mysql45讲,就好像发现了新大陆一样,这是我认真做笔记的第一天,说实话第一讲我已 ...
- 腾讯面试:一条SQL语句执行得很慢的原因有哪些?---不看后悔系列
说实话,这个问题可以涉及到 MySQL 的很多核心知识,可以扯出一大堆,就像要考你计算机网络的知识时,问你"输入URL回车之后,究竟发生了什么"一样,看看你能说出多少了. 之前腾讯 ...
- 一条SQL语句执行得很慢的原因有哪些?
说实话,这个问题可以涉及到 MySQL 的很多核心知识,可以扯出一大堆,就像要考你计算机网络的知识时,问你“输入URL回车之后,究竟发生了什么”一样,看看你能说出多少了. 之前腾讯面试的实话,也问到这 ...
- 一条SQL语句执行得很慢的原因有哪些?(转)
一条 SQL 语句执行的很慢,那是每次执行都很慢呢?还是大多数情况下是正常的,偶尔出现很慢呢?所以我觉得,我们还得分以下两种情况来讨论. 1.大多数情况是正常的,只是偶尔会出现很慢的情况. 2.在数据 ...
- 一条SQL语句执行得很慢的原因有哪些
说实话,这个问题可以涉及到 MySQL 的很多核心知识,可以扯出一大堆,就像要考你计算机网络的知识时,问你"输入URL回车之后,究竟发生了什么"一样,看看你能说出多少了. 之前腾讯 ...
- 一条Sql语句分组排序并且限制显示的数据条数
如果我想得到这样一个结果集:分组排序,并且每组限定记录集的数量,用一条SQL语句能办到吗? 比如说,我想找出学生期末考试中,每科的前3名,并按成绩排序,只用一条SQL语句,该怎么写? 表[TScore ...
随机推荐
- mailto的使用
用mailto会使用Windows自带的邮件进行发送邮件 方式一,代码如下: [注意:一下表单元素中的 name的值不能改变] <form action="mailto:lisi@12 ...
- SAS学习笔记之《SAS编程与数据挖掘商业案例》(4)DATA步循环与控制、常用全程语句、输出控制
SAS学习笔记之<SAS编程与数据挖掘商业案例>(4)DATA步循环与控制.常用全程语句.输出控制 1. 各种循环与控制 DO组 创建一个执行语句块 DO循环 根据下标变量重复执行DO和E ...
- [Windows Server 2003] IIS自带FTP安装及配置方法
★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com★ 护卫神·V课堂 是护卫神旗下专业提供服务器教学视频的网站,每周更新视频.★ 本节我们将带领大家:IIS6.0自 ...
- 删除ListView item数据 页面不刷新
最近碰到一个匪夷所思的事情.就是我删除listView中一条item数据 网络请求成功了 但是页面不成功,一番折腾 ,找到问题 ,原来我给item 添加了北京点击事假,又给listView 被禁设置 ...
- css 众妙之门 学习笔记
伪类: 结构伪类: :empty :only-child :before :after :active :hover :focus :link :visited :first-child :last- ...
- mybatis 项目配置
第一:environments MyBatis 支持多个环境,可以任意配置: 第二:transactionManager MyBatis 支持两种类型的事务管理器:JDBC 和 MANAGED(托管) ...
- Swift 3到5.1新特性整理
本文转载自:https://hicc.me/whats-new-in-swift-3-to-5-1/,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有. Hipo 2.0 重写从 Swif ...
- Java数组数据类型
Java数组数据类型 数组是多个相同类型的数据的组合,数组中的元素可以是任何类型的数据: 一维数组 package com.ahabest.array; public class ArratTest ...
- 学不好Linux?我们分析看看正确的学习方法是什么-马哥教育
2018年里,Linux运维的职位数量和平均薪资水平仍然持续了去年的强劲增幅,比很多开发岗位涨的都快.从研究机构的数据来看,Linux职位数量和工资水平涨幅均在IT行业的前五之列,比去年的表现还要好一 ...
- vmware vSphere client中,选择文件->部署OVF模板,报错处理方法
在vmware vSphere client中,选择文件->部署OVF模板,选择指定的OVA文件,按步骤进行,则会出现这样的错误:此OVF软件包使用了不受支持的功能.OVF软件包需要不支持的硬件 ...