Получение нулевых значений при попытке назначить оценку столбцу - PullRequest
0 голосов
/ 27 августа 2018

Я работаю над системой начисления очков в MySQL Workbench, и по большей части она идет гладко.Один столбец доставляет мне проблемы и продолжает приводить к нулевым значениям, даже если исходные данные не содержат нулевых значений.Это запрос, который я использую для извлечения столбца.

SELECT 
    (CASE days_in_current_status
        WHEN days_in_current_status < 1000 THEN 0.33 * 20
        WHEN days_in_current_status BETWEEN 1000 and 2000 THEN 0.66 * 20
        WHEN days_in_current_status > 2000 THEN 1 * 20
    END) AS DI_score
FROM
    issues

Вот изображение значений из исходного столбца.

Original values from the data

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

1 Ответ

0 голосов
/ 27 августа 2018

Проблема в том, как вы написали выражение CASE.В написанной вами форме он сравнивает значение days_in_current_status со значением days_in_current_status < 1000 (или одним из других логических выражений), которое в MySQL будет либо 1 (true), либо 0 (false).В результате ни одна из ветвей CASE не будет соответствовать (если только days_in_current_status не оказалось равным 1 или 0), и, поскольку у вас нет предложения ELSE, результатом будет NULL.Если вы переписываете свое выражение CASE, как показано ниже, оно должно работать как положено.

(CASE
    WHEN days_in_current_status < 1000 THEN 0.33 * 20
    WHEN days_in_current_status BETWEEN 1000 and 2000 THEN 0.66 * 20
    WHEN days_in_current_status > 2000 THEN 1 * 20
END) AS DI_score

См. Руководство для обсуждения двух форм выражения CASE.

...