企业在数字化转型中如何利用常用前端框架提高开发效率并确保安全合规?
674
2022-12-02
一条SQL语句求全年平均值
一年有8760个小时!(才这么点。。。)
有个气候表,存储了当地从1到8760小时的温度数据。现在,要求全年的温度每天平均值。
CREATE TABLE #Climate(h INT ,t DECIMAL(18,4));--h:小时 t:温度值--里面有8760条记录,对应全年每小时的温度值--现在,想将全年气温按天计算平均值,保存到表#tDCREATE TABLE #tD(d INT ,avgt DECIMAL(18,4));--d:天 avgt:平均温度值--最简单,就是用循环DECLARE @d INT;DECLARE @h1 INT,@h2 INT;SET @d = 1;WHILE @d <= 365BEGIN 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 <= 365BEGIN 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;
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~