[英]Combine 2 MYSQL count queries from same table
我正在尝试创建一个查询,该查询将为我提供在指定时间范围内按周分组的打开和关闭的票证数量。 有人对我如何实现这一目标有想法吗?
如果我将时间参考从T1.closed
改为T1.opened
我将为一列而不是另一列获得正确的分组。
以下是我到目前为止所拥有的。
SELECT
FROM_DAYS(TO_DAYS(T1.created) -MOD(TO_DAYS(T1.created) -1, 7)) as week,
COUNT(T1.created) as Opened, COUNT(T2.ticket) as Closed
FROM issues as T1
LEFT JOIN issues T2 on T1.ticket = T2.ticket AND T1.closed
BETWEEN (DATE_SUB(CURDATE(), INTERVAL 2 MONTH))
AND (DATE_SUB(CURDATE(), INTERVAL 1 MONTH)) AND T1.closed IS NOT NULL
WHERE
T1.created > (DATE_SUB(CURDATE(), INTERVAL 2 MONTH))
AND
T1.created < (DATE_SUB(CURDATE(), INTERVAL 1 MONTH))
GROUP BY
week
据我了解,t1.opened和t1.closed是日期,因此您可以使用:
select `week`, sum(`opened`), sum(`closed`) from
(
select week(t1.opened) as `week`, count(*) as `opened`, 0 as `closed`
from issues as t1
where t1.opened is not null AND ##FILTER BY OPENED##
group by week(t1.opened)
union all
select week(t2.closed) as `week`, 0 as `opened`, count(*) as `closed`
from issues as t2
where t2.closed is not null AND ##FILTER BY CLOSED##
group by week(t2.closed)
) as t3
group by `week`
注意:您会发现有2个查询,请不要加入它们,因为可能有几周没有关闭/打开的问题
注意2:如果您要按创建日期添加过滤器-您需要考虑过滤器的工作方式,例如问题是在1月1日创建,1月8日打开,1月15日关闭创建的,则应产生以下每个范围:1-7 ,2-8、9-16?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.