SQL 쿼리에서 두 클래스의 값을 집계하려면 어떻게해야합니까?
-
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;
제휴하지 않습니다 StackOverflow