一条SQL语句求全年平均值
一年有8760个小时!(才这么点。。。)
有个气候表,存储了当地从1到8760小时的温度数据。现在,要求全年的温度每天平均值。
CREATE TABLE #Climate(h INT ,t DECIMAL(18,4));--h:小时 t:温度值
--里面有8760条记录,对应全年每小时的温度值 --现在,想将全年气温按天计算平均值,保存到表#tD
CREATE TABLE #tD(d INT ,avgt DECIMAL(18,4));--d:天 avgt:平均温度值 --最简单,就是用循环
DECLARE @d INT;
DECLARE @h1 INT,@h2 INT;
SET @d = 1;
WHILE @d <= 365
BEGIN
SET @h1 = 24 * (@d - 1);
SET @h2 = @h1 + 24; --缓存计算值到表变量
INSERT INTO #tD(d,avgt)
SELECT @d
,AVG(t)
FROM [#Climate]
WHERE h BETWEEN @h1 AND @h2; SET @d = @d + 1;
END --end of @d <= 365
但是,存储过程用循环并没有什么优势,效率不高。我们可以使用一条SQL语句来搞定它。
首先要设置一张 天 表,一年有365天,对应有365条记录
CREATE TABLE #days(d INT);
DECLARE @i INT = 1;
WHILE @i <= 365
BEGIN
INSERT INTO #days(d) VALUES(@i);
SET @i = @i + 1;
END
利用这个天表,进行聚合运算
INSERT INTO #tD(d,avgt)
SELECT ds.d
,AVG(c.t)
FROM [#Climate] c,[#days] AS ds
WHERE c.h BETWEEN 24 * (ds.d - 1) AND ds.d * 24
GROUP BY ds.d;
一条SQL语句求全年平均值的更多相关文章
- 一条Sql语句分组排序并且限制显示的数据条数
如果我想得到这样一个结果集:分组排序,并且每组限定记录集的数量,用一条SQL语句能办到吗? 比如说,我想找出学生期末考试中,每科的前3名,并按成绩排序,只用一条SQL语句,该怎么写? 表[TScore ...
- JavaWeb 学习009-4个页面,5条sql语句(添加、查看、修改、删除)
===========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==+++++++++ 2016-12-3------ ...
- JavaWeb 学习007-4个页面,5条sql语句(添加、查看、修改、删除)2016-12-2
需要复习的知识: 关联查询 =================================================================================班级模块学 ...
- C#实现执行多条SQl语句,实现数据库事务
C#实现执行多条SQl语句,实现数据库事务 在数据库中使用事务的好处,相信大家都有听过银行存款的交易作为事务的一个例子.事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的 ...
- 如果一条SQL语句太长,我们可以通过回车键来创建一个新行来编写SQL语句,SQL语句的命令结束符为分号(;)。
1.如果一条SQL语句太长,我们可以通过回车键来创建一个新行来编写SQL语句,SQL语句的命令结束符为分号(;). 2.select查询的多个字段之间要用逗号“,”分割,如果查询涉及多个表,那多个表之 ...
- c#中执行多条sql语句【ORA-00911: 无效字符】
问题描述: 在plsql里执行多条sql语句的时候,使用“,”(逗号)分隔,测试可以执行多条,而在C#执行多条sql语句的时候[ORA-00911: 无效字符]. 有时我们需要一次性执行多条sql语句 ...
- Spring 中jdbcTemplate 实现执行多条sql语句
说一下Spring框架中使用jdbcTemplate实现多条sql语句的执行: 很多情况下我们需要处理一件事情的时候需要对多个表执行多个sql语句,比如淘宝下单时,我们确认付款时要对自己银行账户的表里 ...
- MyBatis一次执行多条SQL语句
MyBatis一次执行多条SQL语句 有个常见的场景:删除用户的时候需要先删除用户的外键关联数据,否则会触发规则报错. 解决办法不外乎有三个:1.多条sql分批执行:2.存储过程或函数调用:3.sql ...
- 用一条SQL语句取出第 m 条到第 n 条记录的方法
原文:用一条SQL语句取出第 m 条到第 n 条记录的方法 --从Table 表中取出第 m 条到第 n 条的记录:(Not In 版本) * FROM Table id ...
随机推荐
- java中的结构--switch选择结构
if-switch 选择结构 switch结构可以更好的解决等值判断问题switch 选择结构的语法:switch (表达式){ case 常量 1: //代码块1: break; case 常量 2 ...
- 阿里云虚拟主机针对恶意频繁攻击式访问造成CPU爆满的解决方法
最近网站CPU经常爆满,到阿里云提交了工单,工程师给我的处理意见: 您好,虚拟主机CPU占用比较高通常这种情况有两种可能: 一是网站应用程序代码逻辑较复杂,或业务架构效率比较低,在请求了某个网 ...
- Python3 每次处理一个字符
""" Python3.4[文本]之每次处理一个字符 """ test_str = "my name is bixiaopeng& ...
- WEB文件上传之apache common upload使用(一)
文件上传一个经常用到的功能,它有许多中实现的方案. 页面表单 + RFC1897规范 + http协议上传 页面控件(flash/html5/activeX/applet) + RFC1897规范 + ...
- Android ExpandableListView的使用详解
ExpandableListView(可扩展的ListView) ExpandableListVivew是ListView的子类,它在普通ListView的基础上进行了扩展,它把应用中的列表项分为几组 ...
- Java_Web三大框架之Hibernate配置文件(二)
下面介绍一下编写Hibernate的配置文件,使用Hibernate操作数据库. 开始部署:下载需要的jar包 下载Hibernate Hibernat ...
- 删除Git服务器文件但是保留本地文件
参考: https://blog.csdn.net/u012804886/article/details/83059315 https://www.cnblogs.com/wfsovereign/p/ ...
- todey
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/> 框架集fromset ...
- redis在linux下安装以及扩展
安装过redis后发现回头忘了,今天重新安装记录下 首先 我是在home下创建redis文件 mkdir redis 然后直接用wget安装 wget http://download.redis ...
- JavaScript day2(变量)
变量(variable) 允许计算机以一种动态的形式来存储和操作数据,通过操作指向数据的指针而不是数据本身来避免了内存泄露,变量(Variable)的名字可以由数字.字母.$ 或者 _组成,但是不能包 ...