未除以数字的行数

count of rows which are not divided by a number

我有一个像下面这样的专栏。

Value
_____
48
48
39
96
50

我想把这个除以48

从以上5个值来看,第1、2、4行可以划分,第3、5行不能。我必须用 SQL.

来做到这一点

EG:

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

你问的是整数除以 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

你可以用一个简单的 where 子句来做到这一点

SELECT value FROM table WHERE value%48 = 0

取模运算符returns操作数相除的余数这实际上意味着我们正在检查数字是否可整除(当数字可整除时余数为零)

所以,如果你想计算不可分割的东西,那么简单地使用下面的查询

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

您可以使用模数(%) 求出结果。检查下面的查询它会帮助你。

declare @tbl table (val int)

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

select * from @tbl where val % 48 =0

输出

val
48
48
96