如何在sql中将行分组为两组?

Jan*_*nek 1 sql group-by

假设我有这样一张桌子:

id|time|operation
1  2      read
2  5      write
3  3      read
4  7      read
5  2      save
6  1      open
Run Code Online (Sandbox Code Playgroud)

现在我想做两件事:

  1. 将所有这些记录分为两组:1) 操作等于“读取”的所有行 2) 所有其他行。
  2. 总结每组的时间。

这样我的查询只会导致两行。

到目前为止我得到的是:

select 
 sum(time) as total_time,
 operation
group by
 operation
;
Run Code Online (Sandbox Code Playgroud)

虽然这给了我很多组,这取决于不同操作的数量。

我怎么能把它们分成两类?

干杯!

Mar*_*c B 5

group by 可以采用任意子句,所以

GROUP BY (operation = 'read')
Run Code Online (Sandbox Code Playgroud)

将工作。本质上,您将根据比较的布尔结果而不是操作字段的值进行分组,因此任何“读取”的记录都将是 group 1,任何未读取的记录都将是 group 0