sql - 如何在 SQL 查询中聚合两类值?

标签 sql postgresql view

我有一个包含间隔的表格:

CREATE TABLE tbl (
    user_id: INTEGER,
    start: TIMESTAMP,
    end: TIMESTAMP,
    billable: BOOLEAN
);

我想创建一个如下所示的 View :

user_id | billable_time | unbillable_time

我可以使用如下查询获取这两个中的一个:

SELECT user_id, sum(end - start) AS billable_time WHERE billable = TRUE GROUP BY user_id;

但是,我需要这两列,不可计费时间是等效的:

SELECT user_id, sum(end - start) AS unbillable_time WHERE billable = FALSE GROUP BY user_id;

如何将这两个值放入一个查询中?

最佳答案

select user_id, sum(case billable when 1 then (end - start) end) as can_bill,
  sum(case billable when 0 then (end - start) end) as unbillable

关于sql - 如何在 SQL 查询中聚合两类值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1406663/

相关文章:

mysql - 计算 MySQL 中 select 的列

sql - 我可以对检索到的数据集中的每个元组使用 MAX 函数吗

postgresql - 尝试授予权限时关系不存在

android - 对我的所有 Activity 使用固定 View

sql - 如何获得“不存在”查询的最大值

按日历日期排序的 SQL 数据

python - 在使用 UUID 字段作为主字段的 Django 模型中添加非主键自动字段或 'serial' 字段

sql - PostgreSql 函数 "Insert data from a table to an other"

java - .setBackgroundColor() 在点击事件之外不起作用

django - 如何将计算列添加到 django 模型的列表页面?