显示不同用户的不同备注的不同计数

时间:2017-09-02 12:47:41

标签: mysql sql select count

请为我目前正在进行的项目提供解决方案

每周为用户分配一个任务并提交答案。在评级表上,他们在那一周被评为赢或输。

我需要一种方法来查看评级表中的所有用户,以查看他们已经赢得并且并排丢失的任务数量

以下是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

我需要提取结果以这样看:

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

1 个答案:

答案 0 :(得分:2)

由于聚合函数(包括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