mysql—不被数字除的行数

xdnvmnnf  于 2021-08-09  发布在  Java
关注(0)|答案(3)|浏览(284)

我有下面这样一个专栏。

Value
_____
48
48
39
96
50

我想把这个除以48。
从上述5个值中,第1、2、4行可以划分,但第3、5行不能划分。我必须用sql来实现这一点。
如:

select count(*) from tbl where value/42 
Result: 2
fhity93d

fhity93d1#

当整数被48除时,您要求的是余数。在数学中有一个特殊的名字,模运算。这实际上是数论和群论中非常有趣的一部分。
大多数数据库都支持模运算符或函数 % . 所以这个想法是:

select value
from t
where value % 48 = 0;

这可能是:

where value mod 48 = 0
where mod(value, 48) = 0

取决于数据库。
另一种方法是:

where floor(val / 48) * 48 = val
oxalkeyp

oxalkeyp2#

你可以用一个简单的where子句来实现

SELECT value FROM table WHERE value%48 = 0

模运算符返回操作数除法的余数,这实际上意味着我们正在检查数字是否可整除(当数字可整除时,余数为零)
所以,如果你试图计算什么是不可除的,那么简单的使用下面的查询

SELECT count(value) FROM table WHERE value%48 != 0
qpgpyjmq

qpgpyjmq3#

您可以使用模数(%)来查找结果。检查下面的查询,它将帮助您。

declare @tbl table (val int)

insert @tbl values(48),(48),(39),(96),(50)

select * from @tbl where val % 48 =0

输出

val
48
48
96

相关问题