sql 中存储过程while循环select 计算百分比效率低 请教哪里问题

weixin_42669646 weixin_42669646 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
传入两个日期,计算两个日期间每小时条数除6的百分比
查一天就要27秒


ALTER PROCEDURE [dbo].[gethour]
@a datetime,
@b datetime,
@c nchar(50)
AS
BEGIN
declare @xiaoshi int,@chushu float,@num int

set @chushu = 6
set @xiaoshi = DATEDIFF(Hour, @a, @b)
set @num=0


while @num<@xiaoshi
begin
select (select top 1 (cast( convert (decimal(18,2),100*cast((select count(*) from [g_zdcjl].[dbo].[zdcjl_data] where datediff(HH,Dtime,@a)=0 and 系统=@c) as float)/@chushu )as varchar)+'%')from [g_zdcjl].[dbo].[zdcjl_data] )as 百分比,@a as 时间,@c as 点位
set @a=dateadd(HOUR,1,@a)
set @num=@num+1
end

END
...全文

相关推荐

MySQL存储过程中使用WHILE循环语句的方法

本文实例讲述了MySQL存储过程中使用WHILE循环语句的方法。分享给大家供大家参考。具体如下: mysql> mysql> delimiter $$ mysql> mysql> CREATE PROCEDURE myProc() -> BEGIN -> -> DECLARE i int; -> SET i=1; -> loop1: WHILE i&lt;=10 DO -> IF MOD(i,2)&lt;>0 THEN /*Even number - try again*/ -> SELECT CONCAT(i," is an odd number"); -> END

weixin_38629130

MySQL存储过程循环操作

存储过程是数据库中的一种编程结构,允许将多条 SQL 语句封装成一个可复用的模块,并通过一个名称调用它。在复杂的数据库操作场景中,存储过程通过批量执行多条语句,显著提高了执行效率,同时减少了应用程序与数据库之间的通信消耗。与传统的单一 SQL 语句执行相比,存储过程可以将复杂的业务逻辑移动到数据库层,从而增强了操作的一致性和可维护性。此外,存储过程也有助于模块化设计,使得频繁执行的数据库操作能够被重复使用和集中管理。特点描述示例提高执行效率。

Mr数据杨

mysql存储过程之循环语句(WHILE,REPEAT和LOOP)用法分析

主要介绍了mysql存储过程之循环语句(WHILE,REPEAT和LOOP)用法,结合实例形式分析了mysql存储过程循环语句WHILE,REPEAT和LOOP的原理、用法及相关操作注意事项,需要的朋友可以参考下

weixin_38614812

一个简单的sql循环语句脚本

一个简单的sql循环语句脚本

blue_sky001

SQL Server数据库按百分比查询出表中的记录数

主要介绍了SQL Server数据库在一个表中按百分比查询出记录条数的方法及代码示例,需要的朋友可以参考下

weixin_38681628
评论 7
收藏 已收藏
分享
返回顶部
weixin_42669646
疑难问题 22,298 成员 121,727 内容