mysql - 使用@variable_Name时如何更改变量类型?

标签 mysql variables

我尝试计算某些库存(位置 ID (loc_id) 3 和位置 ID 4)占所有库存的百分比。我的尝试如下:

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。

我试图将数量列的数据类型从整数更改为双/小数,但@percentage总是返回0。我想知道是否有一种方法可以改变@percentage的数据类型以使其显示真实的百分比?

最佳答案

您可以转换为小数/ float ,或者仅乘以 1.0:

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

事实上,这太过分了。只需将 DIV 更改为 /:

SELECT @percentage := @locid3and4 / @totalInv;

如果您不想要,为什么要选择整数除法?

关于mysql - 使用@variable_Name时如何更改变量类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41948836/

相关文章:

php - ID 不等于正在查看的当前产品 ID - Laravel 5.2

php - 使用 php 从 mysql 搜索

variables - 何时使用对象实例变量与向方法传递参数

function - 命名返回变量未在 for 循环中设置

java - 对变量的更改不会保留在循环之外并且变量不会继承到其他类

c - 变量警告设置但未使用

mysql - 多个表与mysql分片

mysql - 如何在mysql中将varchar转换为bigint

PHP:函数不知道变量甚至存在

MYSQL - 我如何减去同一个表上两个不同行上的两列?