请为我目前正在进行的项目提供解决方案
每周为用户分配一个任务并提交答案。在评级表上,他们在那一周被评为赢或输。
我需要一种方法来查看评级表中的所有用户,以查看他们已经赢得并且并排丢失的任务数量
以下是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
答案 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