كيف يمكنني تجميع فئتين من القيم في استعلام 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