[英]How to get only max value from variable in nested for loop
我需要有關此代碼的幫助嗎? 結果是:
但我期望這樣:
用戶循環的最大值
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.