0
我有一个表remarks
与id, story_id, like
列等可以+1
,-1
我希望我的select
查询返回下面的列story_id, total, n_like, n_dislike
其中total = n_like + n_dislike
无子查询。选择的结果集行的列变换
我目前like
和select
荷兰国际集团like as like_t, count(like) as total
这是给我像
-- like_t --+ --- total --
-1 | 2
1 | 6
的输出,并在返回结果集的两行做了group by
。但我要的是得到1
排在那里n_like is 6
和n_dislike是2
和total
是8
是的真正的列名不是,但问题是这些'+ 1','-1'不是整数,它们是一些'enum'类型。所以'abs'和总和将不起作用。只有'count' will.so just(CASE WHEN“like”> 0 THEN count(“like”)ELSE 0 END)as n_like works。谢谢 – 2012-04-18 07:03:38
更好地使用'CASE WHEN',就像“> 0 THEN 1 ELSE 0 END'这个n_like字段。另外,也许最好是使数值为数字? – vyegorov 2012-04-18 07:08:37
如果'+ 1'和'-1'是唯一的可能性,我应该将整个'numeric'赋值给它吗?这个查询给出了两行'+ like',其中'n_like = n'和'n_dislike = 0',另一行'dislikes'其中'n_like = 0'和'n_dislike = n',但是我想要它在一个行 – 2012-04-18 07:16:25