首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在嵌套的for循环中仅从变量中获取最大值

如何在嵌套的for循环中仅从变量中获取最大值
EN

Stack Overflow用户
提问于 2019-02-22 03:37:47
回答 2查看 94关注 0票数 0

我需要这段代码的帮助吗?结果是:

  • jon 15
  • bob 38
  • steve 180
  • bob 14
  • steve 240
  • steve 180
  • luk 203

但我是这样期待的:

  • jon 15
  • bob 38
  • steve 240
  • luk 203

来自用户循环的最大值

 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谁也在如果条件是真的,我希望此用户的最大值

EN

回答 2

Stack Overflow用户

发布于 2019-02-22 03:44:28

这可以通过一条select语句轻松完成。显然,使用PL/SQL没有任何好处,而且它肯定更慢。

select name, max(num) from tbl
group by name
票数 1
EN

Stack Overflow用户

发布于 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);

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54814942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档