2013-05-10 140 views
0

這是我的表votes,其中voteType 1 = a negative vote, voteType 0 = a positive vote如何避免-1在這種情況下

"id" "votedElm" "voteType" "voteProcessed" "country" 
"3"  "6"   "1"   "0"    "US"//1-1=0 

"4"  "8"   "0"   "0"    "US"//2+0-1=1 
"9"  "8"   "1"   "0"    "US" 

"5"  "9"   "0"   "0"    "US"//2+0-1=1 
"10" "9"   "1"   "0"    "US" 

,這我的表likes

"id" "type" "parent" "country" "votes" 
    6  10  3   US   1 
    8  10  7   US   2 
    9  10  7   US   2 

在上面,我運行下面的SQL來算票votes,然後添加或減去喜歡他們。

SELECT 
    votedElm, 
    SUM(CASE WHEN voteType = 0 THEN 1 ELSE -1 END) AS Totalcount 
FROM votes 
WHERE country = 'US' 
GROUP BY votedElm; 

然而,對於id 6 in votes,使用上面的查詢時,其結果是-1。所以,1 (in likes) minus -1 = 2。我想要的結果是0。 另外,8 and 9votes表中,結果應該是1(2-1+0=1)。這裏顯示爲0

你能看到我要出錯的地方嗎?我該如何解決這個問題?

+3

「voteType 1 =反對票,voteType 2 =正面投票。」 ---但在表中的例子中有1和0 – zerkms 2013-05-10 04:41:12

+0

對不起。我的錯。我離完全瘋了幾步之遙。 – Norman 2013-05-10 04:42:47

+0

「的結果是-1因此,1(喜歡)減-1 = 2」這是什麼? – diEcho 2013-05-10 04:50:12

回答

3

我想你不想顯示negative.So.First中的投票表決比不像減去數數.....嘗試像這樣...

Select voteby,(Count(votetype)-Sum(Case when votetype=1 then 1 else 0 end)) as b 
    from t group by voteby 

Sql Fiddle Demo

+0

你對我的朋友。你是對的。 – Norman 2013-05-10 05:03:09

+0

@Norman祝好運享受編碼... – 2013-05-10 05:04:17

+0

我有更多的事情可以做(不是免費的)。查看我的個人資料獲取聯繫信息如果你有興趣。感謝您的幫助。 – Norman 2013-05-10 05:08:08

相關問題