未除以数字的行数
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
我有一个像下面这样的专栏。
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