mysql - 使用嵌套查询的mysql摘要列
问题描述
我需要一个 select 语句来返回不同的汇总列。
这是基本结构:
Column 1: Date
Column 2: Owner
Column 3: Sum of "Hours" where "Status" = 'billable'
Column 4: Sum of "Hours" where "Status" = 'non billable'
所以一个样本返回行看起来像......
Date | Owner | Billable | Non Billable
2019-01-01 Bob Smith 17.54 13.66
2019-01-01 Joe Johnson 23.17 16.54
这是我的代码。它返回整个日期范围内所有所有者的总小时数,而不是按日期的所有者。
SELECT "Date", "Owner",
(SELECT sum("Hours")
FROM timesheets
WHERE "Status" = 'Billable' AND "Date" between '2019-01-01' AND '2019-02-20'
) AS "Billable",
(SELECT sum("Hours")
FROM timesheets
WHERE "Status" = 'Non Billable' AND "Date" between '2019-01-01' AND '2019-02-20'
) AS "Non Billable"
FROM timesheets
WHERE "Date" between '2019-01-01' AND '2019-02-20'
GROUP BY "Date", "Owner"
ORDER BY "Date", "Owner"
解决方案
您的子查询是按日期、所有者分组的,并且您有总和 .. 要获得按日期摸索的总和,所有者您可以使用条件总和直接求和
SELECT Date, Owner,
sum(case when Status = 'Billable' then Hours else 0 end) `Billable`
sum(case when Status = 'Non Billable' then Hours else 0 end) `Non Billable`
FROM timesheets
WHERE Date between '2019-01-01' AND '2019-02-20'
GROUP BY Date, Owner
ORDER BY Date, Owner
推荐阅读
- android - 如果我在 Playstore 中上传了我的应用程序,如何告诉 admob?
- angular - 角度材料日期选择器:1天前的日期解析UTC问题
- laravel - Laravel 5.5 中的调度无法正常工作
- c++ - 如何通过 COM3 提供数据?
- matlab-guide - l1maggic 压缩感知 Matlab 上的问题
- c - 基于变量值隔离线程的 gdb 脚本
- html - 在自定义下拉菜单中隐藏额外的文本
- java - 无法使用 apache poi java 在 excel 中评估嵌套公式
- mysql-python - MYSQL 连接没有选择新提交的数据
- jquery - 使用 jQuery 过滤 json 数组