我有一个数据库,例如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.
答案 0 :(得分:1)
答案 1 :(得分:1)
尝试以下查询
select count(*) from
( select count(*) from example a
where MOD(`Test_ID`, 4) <> 0 group by Test_ID) b
由于SQL
中的错误,需要使用别名a
和b
#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