Как получить только максимальное значение из переменной во вложенном цикле - PullRequest
0 голосов
/ 21 февраля 2019

мне нужна помощь с этим кодом?Результат:

  • Джон 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, который также в случае выполнения условия, я хочу максимальное значение для этого пользователя

Ответы [ 2 ]

0 голосов
/ 22 февраля 2019

Я бы все же предположил, что лучшим решением для вас является использование SQL для извлечения значений, а не циклов.Похоже, вы хотите, чтобы максимальный (выходной) - минимальный (входной) группировался по пользователю.

В верхней части головы я бы предложил что-то вроде: выбрать пользователя, мин (вход), максимум (выход)из группы emp по пользователю;

Если вы ищете его, сделайте математику: выберите пользователя, out-in from (выберите пользователя, min (in) как in, max (out) как out из emp группы)пользователем);

0 голосов
/ 21 февраля 2019

это можно легко сделать с помощью одного оператора select.Очевидно, что польза от использования PL / SQL не имеет смысла, и он определенно медленнее.

select name, max(num) from tbl
group by name
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...