【问题标题】:MYSQL case statement with sum query带有求和查询的 MYSQL 案例语句
【发布时间】:2013-10-28 09:40:51
【问题描述】:

不确定这是否可能 - 但我正在尝试执行以下操作 有一个包含以下列的表格

 vote_id (primary_key)
 question_id
 user_id
 vote_count

这基本上存储了用户对特定问题的所有投票

现在我可以在一个查询中获得总投票数并检查特定用户是否已投票。

类似的东西 - 让我们说 user_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

这显然行不通。

我期望的是,如果某个特定用户投票了 - 他的 user_id 应该与投票数一起返回 - 如果他没有投票 - 返回 null

谢谢

【问题讨论】:

  • 如果下面的答案不是您想要的(看起来可能是),请考虑提供适当的 DDL 和/或 sqlfiddle 以及所需的结果

标签: mysql sql


【解决方案1】:

那就是:

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 的用户投了票,has_user_id_10 将大于零,否则为零。可能您想要严格的1 或0,然后只需将其替换为

COUNT(IF(user_id = 10, 1, NULL))>0 AS has_user_id_10

【讨论】:

    【解决方案2】:

    请试试这个 -

    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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-27
      • 2013-09-23
      • 2017-07-17
      • 1970-01-01
      • 2015-01-21
      • 1970-01-01
      相关资源
      最近更新 更多