我有一张表,我关注的列是Id
,它是唯一标识符,Value
是十进制投票
我知道如何按Id
分组并计算Value
大于3的所有行。(我们将Value
> 3计为{ {1}}和Vote
小于2.9为-1 Value
) - 从开始向上/向下移动。无论如何都没关系。这只是解释或评价系统。
我的问题是:如何进行查询
Vote
我采取相反的做法来减少投票,我如何在一个查询中返回所有Id和投票数(如果 select Id, Value, count(*) as [COUNT]
from [Ratings]
group by Id, Value
having Value > 3.0
order by Id desc
,如果值> 3将是1 Vote
小于3,即-1 Value
)
答案 0 :(得分:1)
SQL Server允许您在聚合函数中指定条件。在您的情况下,您需要在条件中使用SUM ..
所以,这就是你的最终查询的样子
select Id, Value,SUM(CASE WHEN Value>3.0 THEN 1 ELSE -1 END) AS VoteCount
from [Ratings]
group by Id
order by Id desc