【问题标题】:Show different count of different remarks for distinct users为不同的用户显示不同数量的不同评论
【发布时间】:2017-09-02 12:47:40
【问题描述】:

我目前正在从事的项目需要解决方案

每周为用户分配一项任务,然后他们提交答案。他们在评分表上的得分为该周的获胜或失败。

我需要一种方法来查看评分表中的所有用户,以并排查看他们赢得和失败的任务数量

以下是 5 个用户的 10 个条目的评分表

**id**             **username**          **date**                    **remarks**

-------------------------------------------------------------------------------

  1                    John              2017-09-02                      Won    
  2                    Kyle              2017-09-02                      Lost    
  3                    Danny             2017-09-02                      Won    
  4                    Mike              2017-09-02                      Won    
  5                    Alli              2017-09-02                      Won    
  6                    Kyle              2017-09-09                      Lost    
  7                    John              2017-09-09                      Won    
  8                    Danny             2017-09-09                      Lost    
  9                    Mike              2017-09-09                      Lost    
  10                   Alli              2017-09-09                      Won

我需要拉出 Result 才能这样看:

Username   Total_tasks    Won      Lost 

 john          2           2         0    
 kyle          2           0         2   
 danny         2           1         1
 mike          2           1         1
 alli          2           2         0

【问题讨论】:

  • 您想要的是一个简单的group by 查询。你首先应该看看 MySQL 函数。还有,到目前为止你做了什么?

标签: mysql sql select count


【解决方案1】:

由于聚合函数,包括 count 会忽略空值,因此您可以使用一个简单的技巧来计算一堆 case 表达式:

SELECT   username,
         COUNT(*) AS total_tasks
         COUNT(CASE remarks WHEN 'Won' THEN 1 END) AS won,
         COUNT(CASE remarks WHEN 'Lost' THEN 1 END) AS lost
FROM     mytable
GROUP BY username

【讨论】:

  • 我们通常为此使用 SUM - 否则(允许警告)您也可以使用 'foo' 作为 1
  • 请您的 mysql 查询看起来没问题,所有任务都在工作。但是我收到了一个错误,说赢了和输了一个别名在赢之前被加急了
猜你喜欢
  • 2020-09-20
  • 1970-01-01
  • 1970-01-01
  • 2013-04-08
  • 1970-01-01
  • 1970-01-01
  • 2021-10-30
  • 1970-01-01
  • 2023-03-19
相关资源
最近更新 更多