sql 中存储过程while循环select 计算百分比效率低 请教哪里问题
查一天就要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<=10 DO -> IF MOD(i,2)<>0 THEN /*Even number - try again*/ -> SELECT CONCAT(i," is an odd number"); -> END
MySQL存储过程循环操作
存储过程是数据库中的一种编程结构,允许将多条 SQL 语句封装成一个可复用的模块,并通过一个名称调用它。在复杂的数据库操作场景中,存储过程通过批量执行多条语句,显著提高了执行效率,同时减少了应用程序与数据库之间的通信消耗。与传统的单一 SQL 语句执行相比,存储过程可以将复杂的业务逻辑移动到数据库层,从而增强了操作的一致性和可维护性。此外,存储过程也有助于模块化设计,使得频繁执行的数据库操作能够被重复使用和集中管理。特点描述示例提高执行效率。
mysql存储过程之循环语句(WHILE,REPEAT和LOOP)用法分析
主要介绍了mysql存储过程之循环语句(WHILE,REPEAT和LOOP)用法,结合实例形式分析了mysql存储过程循环语句WHILE,REPEAT和LOOP的原理、用法及相关操作注意事项,需要的朋友可以参考下
一个简单的sql循环语句脚本
一个简单的sql循环语句脚本
SQL Server数据库按百分比查询出表中的记录数
主要介绍了SQL Server数据库在一个表中按百分比查询出记录条数的方法及代码示例,需要的朋友可以参考下


疑难问题
