Условное вычисление внутри оператора select - PullRequest
0 голосов
/ 19 июня 2020

У меня есть следующий оператор Sqlite на сервере node js:

var rows = db.prepare('SELECT NAME name, NICKNAME nickname, SCORE score, SCORE / ((? - START_TIMESTAMP) / 1000 / 60 / 60 / 24) avg_score FROM ACCOUNTS ORDER BY avg_score DESC, nickname ASC').all(timestamp);

Когда ((? - START_TIMESTAMP) / 1000 / 60 / 60 / 24) меньше 1, я бы хотел установить его равным единице, т.е. оператор должен быть таким:

var rows = db.prepare('SELECT NAME name, NICKNAME nickname, SCORE score, SCORE / 1 avg_score FROM ACCOUNTS ORDER BY avg_score DESC, nickname ASC').all(timestamp);

Если ((? - START_TIMESTAMP) / 1000 / 60 / 60 / 24) больше 1, например 1,5, я хотел бы сохранить исходный оператор, т.е. вычисление будет SCORE / 1.5.

Как можно изменить расчет на приписать это? Как видите, я сортирую по avg_score, поэтому это нужно сделать перед сортировкой.

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