给定一个 tbl 表,编写一个 SQL 查询,来统计每日的胜负次数
+---------+------------------+
| Result(VARCHAR) | Time(DATE) |
+---------+------------------+
| 胜 | 2015-01-01 |
| 负 | 2015-01-01 |
| 胜 | 2015-01-02 |
| 负 | 2015-01-02 |
+---------+------------------+
例如,根据上述给定的 tbl 表格,返回如下结果:
+---------+------------------+
| 胜 | 负 | 时间 |
+---------+------------------+
| 1 | 1 | 2015-01-01 |
| 1 | 1 | 2015-01-02 |
+---------+------------------+
思路1.:
1.查询出胜的次数,按时间分组;
2.查询出负的次数,按时间分组
3.联结查询,根据时间相等。
查询胜利的次数
select time ,count(1) from tbl where result = '胜' GROUP BY time
查询失败的次数
select time ,count(1) from tbl where result = '胜' GROUP BY time
当进行到这里后,我发现没办法使用联结查询。由于sql的不熟练,所以要另外想思路。
思路2:
一次查出胜的次数和负的次数,按时间分组 结果得出
select count(case result when '胜' then 1 end) as 胜,
count(case result when '负' then 1 end) as 负,
time as 时间 from tbl group by time;