我需要这段代码的帮助吗?结果是:
但我是这样期待的:
来自用户循环的最大值
DECLARE
v_z VARCHAR2(50);
max_s VARCHAR2(50);
BEGIN
max_s := -9999999999999;
FOR i IN
(SELECT user,
in,
out
FROM emp)
LOOP
FOR j IN
(SELECT user,
in,
out
FROM emp
AND user = i.user
)
LOOP
IF i.in < j.in AND i.out < j.out AND i.out > j.in AND i.out < j.out AND i.user = j.user
THEN
v_z := ROUND((j.out-i.in),4)*1440 ;
FOR r IN v_z..v_z
LOOP
IF r > max_s THEN
dbms_output.put_line (i.user || ' ' ||r);
END IF;
END LOOP;
END IF;
END LOOP;
END LOOP;
END;
表示例:
user in out
steve 7:00 9:30
steve 8:00 10:00
steve 9:00 11:00
我需要史蒂夫的结果11:00 - 7:00不是10 - 7:00或11:00 - 8:00谁也在如果条件是真的,我希望此用户的最大值
发布于 2019-02-22 03:44:28
这可以通过一条select语句轻松完成。显然,使用PL/SQL没有任何好处,而且它肯定更慢。
select name, max(num) from tbl
group by name
发布于 2019-02-22 05:15:33
我仍然建议您最好的解决方案是使用SQL来拉取值,而不是循环。看起来您希望将max(out) - min(in)按用户分组。
不经意间,我会建议: select user,min(in),max(out) from emp group by user;
如果你正在寻找它,做数学运算: select user,out-in from (select user,min(in) as in,max( out ) as out from emp group by user);
https://stackoverflow.com/questions/54814942
复制相似问题