0

我有一个表,上面有一个简单的上/下投票列,我最初创建为布尔值。true是赞成票,false是反对票。但是,我不确定如何使用聚合函数来实现这种查询结果。例如,5true行和 2false应该等于 +3 的投票。

我在想我需要将列更改为带有 +1 和 -1 的 smallint。这个对吗?有没有更好的方法来查询这样的东西?

4

1 回答 1

5

无需更改数据类型,只需使用 CASE 将其转换为 -1 和 1,然后对表达式求和:

选择总和(当 vote_column 然后 1 else -1 结束时的情况)
FROM your_table

要正确处理 NULL 值,请使用以下命令

选择总和(案例 vote_column
              当为真时 1
              当为假时-1
              否则 0
           结尾)
FROM your_table
于 2011-03-12T17:40:34.000 回答