从下表中,我想计算当状态不是3时得分0.0000的出现次数。此外,我想按问题ID返回唯一的行。
我已尝试过COUNT和Group by条款,但我无法走得太远。非常感谢任何正确方向的帮助。
question_id question_desc status class_id score
650 DE 3 1 0.0000
650 DE 2 1 1.0000
651 ADELA 2 1 1.0000
651 ADELA 2 1 1.0000
652 AE 2 1 1.0000
652 AE 2 1 1.0000
653 AP 2 1 0.0000
653 AP 2 1 1.0000
......转变为......
question_id question_desc count
650 DE 0
651 ADELA 0
652 AE 0
653 AP 1
答案 0 :(得分:3)
您可以使用case
仅计算符合条件的行:
select question_id
, question_desc
, count(case when score = 0 and status <> 3 then 1 end) as [count]
from YourTable
group by
question_id
, question_desc
假设score
是一个精确的数字类型,例如decimal
。如果它是近似数字类型,例如float
或real
,请使用:
, count(case when abs(score) < 0.00005 and status <> 3 then 1 end) as [count]