Привет тофира ,
Да , ваш запрос будет работать, если вы измените знаменатель на 100.0 в (size / 100.0)
.
Однако ваш запрос может вернуть 0, как ваше уравнение:
100 + (calories * (size / 100.0)) < 300
вернет false, когда значения для размера и / или калорий выходят за пределы допустимого диапазона.
Доказательство
Для проверки вашего запроса я создал таблицу с данными и представлением тестов.
Данные
Чтобы можно было что-то проверить, я создал таблицу, в которой значения размера варьировались с шагом 1 от 1 до 1000, а калории с шагом 5 от 5 до 5000, например:
Id | size | calories
----------------------------
1 | 1 | 5
2 | 2 | 10
3 | 3 | 15
4 | 4 | 20
5 | 5 | 25
Test
Чтобы проверить ваше уравнение, я создал представление для проверки каждого шага вашего уравнения.
SQL
CREATE VIEW "test" AS
SELECT id, size AS 'S', calories AS 'C',
size/100.0 AS 'S/100',
calories * (size/100.0) AS 'C*(S/100)',
100 + (calories * (size/100.0)) AS '100+(C*(S/100))',
CASE WHEN (300 > (100 + (calories * (size/100.0))))
THEN 'true' ELSE 'false' END AS 'Eq'
FROM allfoods;
Результат
Id | S | C | S/100 | C*(S/100) | 100+(C*(S/100)) | Eq
---------------------------------------------------------------------------
62 | 62 | 310 | 0.62 | 192.2 | 292.2 | true
63 | 63 | 315 | 0.63 | 198.45 | 298.45 | true
64 | 64 | 320 | 0.64 | 204.8 | 304.8 | false
65 | 65 | 325 | 0.65 | 211.25 | 311.25 | false
66 | 66 | 330 | 0.66 | 217.8 | 317.8 | false
Заключение
Выполнение вашего запроса по моим тестовым данным вернет строку с 1 по 63.