запрос столбца, который находится в переменной + или 1 другого столбца - PullRequest
0 голосов
/ 24 октября 2019

У меня есть таблица с двумя столбцами, и я пытаюсь определить способ выбора записей, в которых два столбца находятся близко друг к другу. Может быть, на основе стандартного отклонения, если я могу думать о том, как это сделать. Но пока вот как выглядит моя таблица:

ID| PCT | RETURN
1 | 20  |  1.20
2 | 15  |  0.90
3 | 0   |  3.00

Значения в поле pct - это процентное число (например, 20%). Значение в поле возврата - это не полностью рассчитанное число% (поэтому оно должно быть на 20% выше первоначального значения). Вопрос, с которым я работаю до сих пор, таков:

select * from TABLE1 where ((pct = ((return - 1)* 100)));

Я хотел бы закончить строками, в которых оба находятся в пределах заданного значения друг друга. Например, если они находятся в пределах 5 точек друг от друга, строка будет возвращена и будет иметь следующий результат:

ID| PCT | RETURN
1 | 20  |  1.20
2 | 15  |  0.90

В приведенном выше примере ID 1 должен быть равен PCT = 20 и Return =20 и ID 2 - это PCT = 15 и RETURN = 10. Поскольку он находился в пределах 5 точек друг от друга, он был возвращен.

ID 3 не был возвращен, поскольку 0 и 200 намного выше 5 точекПорог.

Есть ли способ установить переменную, которая будет возвращать + - 5 при сравнении двух значений из вышеуказанных атрибутов? Спасибо.

1 Ответ

0 голосов
/ 24 октября 2019

RexTester Пример:

Используйте Lead () over (Упорядочить по PCT), чтобы смотреть вперед, и LAG (), чтобы оглядываться на следующий ряд, выполнять математические вычисления и оценивать результаты. .

WITH CTE (ID, PCT , RETURN) as (
SELECT 1 , 20  ,  1.20 FROM DUAL UNION ALL
SELECT 2 , 15  ,  0.90 FROM DUAL UNION ALL
SELECT 3 , 0   ,  3.00 FROM DUAL),
CTE2 as (SELECT A.*, LEAD(PCT) Over (ORDER BY PCT) LEADPCT, LAG(PCT) Over (order by PCT) LAGPCT
         FROM CTE A)

SELECT * FROM CTE2
WHERE LEADPCT-PCT <=5 OR PCT-LAGPCT <=5
Order by ID

Предоставление нам:

+----+----+-----+--------+---------+--------+
|    | ID | PCT | RETURN | LEADPCT | LAGPCT |
+----+----+-----+--------+---------+--------+
|  1 |  1 |  20 |   1,20 | NULL    |     15 |
|  2 |  2 |  15 |   0,90 | 20      |      0 |
+----+----+-----+--------+---------+--------+

или использование возвращаемого значения вместо PCT ... зависит только от того, что вы ищете. Но, возможно, я не до конца понимаю вопрос ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...