Count Row可被4整除

时间:2017-01-10 09:20:43

标签: mysql sql

我有一个数据库,例如1 Lab ID = 15样本每个样本有4个项目或超过4个。

示例数据

Lab ID    Sample ID    Test ID  /each test ID have 
1         16           32            test a     
1         16           32            test b
1         16           32            test c     total test 4
1         16           32            test d

1         17           33            test a
1         17           33            test b
1         17           33            test c     total total 5
1         17           33            test d
1         17           33            test e

1         18           34            test a
1         18           34            test b
1         18           34            test c    total total 5
1         18           34            test d
1         18           34            test e

1         19           35            test a
1         19           35            test b
1         19           35            test c    total total 5
1         19           35            test d   
1         19           35            test e

1         20           36            test a
1         20           36            test b    total total 4
1         20           36            test c
1         20           36            test d

如何计算测试ID中每个测试的数量,该测试ID不能被4整除?

输出必须为3.

7 个答案:

答案 0 :(得分:1)

使用MODULO操作,MOD

select count(*)
from `your_table_name`
where MOD(`Test ID`, 4) <> 0;

<强>结果

enter image description here

答案 1 :(得分:1)

尝试以下查询

    select count(*) from     
    (  select count(*) from example a
       where MOD(`Test_ID`, 4) <> 0 group by Test_ID) b

由于SQL

中的错误,需要使用别名ab
 #1248 - Every derived table must have its own alias 

因此,如果需要,您可以更改别名。

使用SQLFiddle here

希望它可以帮到你

答案 2 :(得分:0)

大多数SQL数据库都支持模运算符。

SELECT COUNT(1) FROM yourTable WHERE yourColumn % 4 != 0

答案 3 :(得分:0)

您可以使用%运算符:

SELECT COUNT(1) FROM TABLE WHERE `Test ID` % 4 <> 0;

答案 4 :(得分:0)

如果您要在同一查询中检索其他统计信息,也可以在COUNT内进行测试:

SELECT COUNT(NULLIF(MOD(`Test ID`, 4), 0))
FROM t;

答案 5 :(得分:0)

如果您只想要测试ID,请尝试此

SELECT A.`Test ID` FROM(SELECT `Test ID`,COUNT(1) AS COUNT FROM TABLE GROUP BY `Test ID`) AS A WHERE A.COUNT % 4<>0;

如果你想要带有计数的测试ID,那么试试这个

SELECT A.`Test ID`,A.COUNT FROM(SELECT `Test ID`,COUNT(1) AS COUNT FROM TABLE GROUP BY `Test ID`) AS A WHERE A.COUNT % 4<>0;

如果您只想计算没有四次测试的总测试ID,那么试试这个

SELECT COUNT(1) AS COUNT FROM(SELECT `Test ID`,COUNT(1) AS COUNT FROM TABLE GROUP BY `Test ID`) AS A WHERE A.COUNT % 4<>0;

答案 6 :(得分:0)

您可以使用模数功能

获得所需的效果

MOD(FieldName,Number)

以下查询将帮助您获得所需的结果: -

选择计数(*) 来自your_table_name 其中MOD(Test ID,4)&lt;&gt; 0;

这里检查MOD(Test ID,4)它不应该等于4