2013-05-09 57 views
0

我得到了我的表像这样叫votes加上或减去

"id" "votedElm" "voteType" "voteProcessed" "country" 
"1"   "4" "0" "0" "US" 
"2"   "5" "0" "0" "US" 
"3"   "6" "1" "0" "US" 
"4"   "8" "0" "0" "US" 
"5"   "9" "0" "0" "US" 
"6"   "10" "0" "0" "US" 
"7"   "10" "0" "0" "US" 
"8"   "10" "0" "0" "US" 
"9"   "8" "1" "0" "US" 
"10" "9" "1" "0" "US" 
"11" "20" "1" "0" "US" 
"12" "10" "1" "0" "US" 
"13" "10" "1" "0" "US" 
"14" "20" "0" "0" "US" 
"15" "22" "0" "0" "US" 
"16" "20" "0" "0" "US" 
"17" "21" "0" "0" "US" 
"18" "10" "0" "0" "US" 
"19" "10" "0" "0" "US" 
"20" "20" "0" "0" "US" 
"21" "21" "0" "0" "US" 
"22" "22" "0" "0" "US" 
"23" "22" "0" "0" "US" 
"24" "22" "1" "0" "US" 

我用这个SQL来获得不同的喜欢和sum如此: select votedElm, count(votedElm) from votes where country = 'US' and voteType = 0 group by votedElm;

但是,在那张表中,我有voteType 0 and 10+投票和1-投票。

在同一个sql中,可以添加+投票并从总和中扣除-投票?而不是有2个不同的查询呢?

锄头我能做到吗?

回答

1

,像这样:

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

看到它在这里的行动:

1
SELECT votedElm, count(votedElm), 
    SUM(IF(voteType = 0, 1, -1)) AS totalVotes 
FROM votes 
WHERE country = 'US' and voteType = 0 
GROUP BY votedElm; 
0

尝试像

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

,或者你可以尝试像

$sql1 = "SELECT SUM(votedElm) AS count 
FROM `votes` 
WHERE country = 'US' and voteType = '0' 
GROUP BY votedElm"; 
$res1 = my_sql_query($sql1); 

$sql2 = "SELECT SUM(votedElm) AS count 
FROM `votes` 
WHERE country = 'US' and voteType = '1' 
GROUP BY votedElm"; 
$res2 = my_sql_query($sql2); 

然后

$res = $res1[0]['count'] - $res2[0]['count']; 
+0

是它的工作对你..? – Gautam3164 2013-05-09 07:35:51

0

你可以试试下面的解决方案

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