根据SQL的条件获取Count

时间:2015-08-23 02:56:37

标签: sql sql-server tsql

我有一张表,我关注的列是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

1 个答案:

答案 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