SQL 쿼리에서 두 클래스의 값을 집계하려면 어떻게해야합니까?

StackOverflow https://stackoverflow.com/questions/1406663

  •  05-07-2019
  •  | 
  •  

문제

간격이 포함 된 테이블이 있습니다.

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

다음과 같은 모습을 만들고 싶습니다.

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

다른 팁

SELECT user_id, billable, sum(end - start) AS billable_time 
GROUP BY user_id,billable;
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top