如何将一行按其值和创建日期分组到不同的行中?

q5iwbnjs  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(261)

我有一张table result , name 以及 created_at 比如:

id | name | result | created_at
1  | Sam  |   1    | 2018-07-12 05:08:04
2  | Tam  |   1    | 2018-07-12 06:08:04
3  | Qam  |   0    | 2018-07-12 07:08:04
4  | Yam  |   1    | 2018-09-12 04:08:04
5  | Xam  |   0    | 2018-09-12 06:08:04
6  | Lam  |   0    | 2018-11-12 07:08:04

(1代表通过,0代表失败)我想按创建日期对数据进行分组,该日期在单独的列中显示结果成功或失败的计数,如:

fail | pass   | created_at
  0   |   2    | 2018-07-12 05:08:04
  1   |   1    | 2018-09-12 04:08:04
  1   |   0    | 2018-11-12 07:08:04

我可以通过这个查询计算just pass或fail的值: select count(result) from call_history where result = 1 GROUP BY DATE(created_at) ,但无法为不同的行提供双where子句。

hiz5n14c

hiz5n14c1#

我会这样写:

SELECT SUM(1 - result) as fail,
       SUM(result as pass)
       created_at
FROM call_history
GROUP BY created_at;
zbwhf8kr

zbwhf8kr2#

你可以使用 case 表达式仅为成功/失败返回非空结果,然后使用 count ,跳过 null 学生:

SELECT   COUNT(CASE result WHEN 0 THEN 1 END) AS fail,
         COUNT(CASE result WHEN 1 THEN 1 END) AS pass,
         created_at
FROM     call_history
GROUP BY created_at

相关问题