带sum查询的MYSQL case语句

带sum查询的MYSQL case语句,mysql,sql,Mysql,Sql,不确定这是否可行,但我正在尝试做以下工作 有一张有下列立柱的桌子 vote_id (primary_key) question_id user_id vote_count 这基本上存储了用户对特定问题的所有投票 现在,在一个查询中,我是否可以得到总票数并检查某个特定用户是否投了票 沿着这些思路的一些东西-比如说对于用户_id 10 SELECT sum(vote), ( CASE WHEN (user_id = 10)

不确定这是否可行,但我正在尝试做以下工作 有一张有下列立柱的桌子

 vote_id (primary_key)
 question_id
 user_id
 vote_count
这基本上存储了用户对特定问题的所有投票

现在,在一个查询中,我是否可以得到总票数并检查某个特定用户是否投了票

沿着这些思路的一些东西-比如说对于用户_id 10

SELECT sum(vote),
    (
        CASE 
            WHEN (user_id = 10)
                THEN user_id
            ELSE NULL
            END
        ) user_id
FROM vote_question
GROUP BY course_question_id
这显然行不通

我所期望的是,如果某个用户已经投票——他的用户id应该与投票计数一起返回——如果他没有投票——返回null

谢谢

这将是:

SELECT 
  SUM(vote),
  COUNT(IF(user_id = 10, 1, NULL)) AS has_user_id_10,
FROM 
  vote_question
GROUP BY 
  course_question_id
-如果id为10的用户投了票,则会导致用户id大于零,如果不是,则为零。可能您想要严格的1或0,然后用

COUNT(IF(user_id = 10, 1, NULL))>0 AS has_user_id_10
请试试这个-

select user_id, vote_count
from
(
select sum(vote) vote_count ,user_id, course_question_id from vote_question group by user_id, course_question_id
)
where vote_count <>0;

如果下面的答案不是你所追求的,它可能是,考虑提供适当的DDL和/或SqLFIDLE连同期望的结果。