簡體   English   中英

如何僅從嵌套循環的變量中獲取最大值

[英]How to get only max value from variable in nested for loop

我需要有關此代碼的幫助嗎? 結果是:

  • 喬恩15
  • 鮑勃38
  • 史蒂夫180
  • 鮑勃14
  • 史蒂夫240
  • 史蒂夫180
  • 203

但我期望這樣:

  • 喬恩15
  • 鮑勃38
  • 史蒂夫240
  • 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如果條件為真,我也希望該用戶獲得最大值

這可以通過單個select語句輕松完成。 使用PL / SQL顯然沒有任何好處,而且速度肯定慢。

select name, max(num) from tbl
group by name

我仍然建議您最好的解決方案是使用SQL拉取值而不是循環。 看起來您想要按用戶分組的max(out)-min(in)。

我會建議:從emp組中按用戶選擇用戶,min(in),max(out);

如果您正在尋找數學,請執行以下操作:選擇用戶,從中向外輸入(選擇用戶,從in的min(in),從emp組按用戶的max(out)移出);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM