Как использовать CASE после арифметики c в Oracle SQL - PullRequest
0 голосов
/ 17 апреля 2020

Мне было интересно, как я буду использовать CASE после расчета. По сути, я хочу вычислить значение, и если это значение будет больше 1, я хочу установить его в 1.

Вот что я получил:

SELECT (HSDIPLOMA + BACHELORDEGREE) / (SELECT AVG(HSDIPLOMA + BACHELORDEGREE) FROM EDUCATIONPROFILE) as res, case when res > 1 then 1 else res END AS result FROM EDUCATIONPROFILE ORDER BY cid ASC

Однако я получаю неверный идентификатор ошибки «RES»: неверный идентификатор. Где моя ошибка? Заранее спасибо.

1 Ответ

1 голос
/ 17 апреля 2020

Вы можете использовать оконные функции и LEAST():

SELECT LEAST( (HSDIPLOMA + BACHELORDEGREE) / AVG(HSDIPLOMA + BACHELORDEGREE) OVER (),
              1
            ) as res
FROM EDUCATIONPROFILE
ORDER BY cid ASC
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...