2017-01-31 2 views
0

Я попытался рассчитать процент определенных запасов (с идентификатором местоположения (loc_id) 3 и идентификатором местоположения 4) из всех запасов. Моя попытка была следующая:Как изменить тип переменной при использовании @variable_Name?

SELECT @totalInv := (SELECT SUM(Quantity) FROM inventory); 

SELECT @locid3and4 := (SELECT SUM(Quantity) FROM inventory 
         WHERE loc_id=3 or loc_id=4); 

SELECT @percentage := ((@locid3and4)DIV(@totalInv)); 

С помощью ручной расчет Я знаю, что процент должен быть 0.346. Тем не менее, @percentage всегда возвращает 0, вероятно, потому, что его тип данных по умолчанию является целым числом, а mySQL округляет значение от 0,346 до 0.

Я попытался изменить тип данных столбца Количество от Integer до DOUBLE/DECIMAL, однако, всегда возвращает 0. Мне интересно, есть ли способ изменить тип данных @percentage, чтобы он отображал истинный процент?

ответ

1

можно заливать в десятичную/число с плавающей точкой, или просто умножить на 1,0:

SELECT @percentage := @locid3and4 * 1.0/@totalInv; 

На самом деле, это слишком много. Просто измените DIV на /:

SELECT @percentage := @locid3and4/@totalInv; 

Почему вы выбор целочисленное деление, если вы не хотите?

Смежные вопросы