JIRA:过去x(即30天)的发布状态计数

时间:2012-08-22 07:59:42

标签: mysql sql jira

使用下面的查询,我可以查看给定日期JIRA中所有issueType的问题计数(否)。

  SELECT count(*), STEP.STEP_ID
  FROM (SELECT STEP_ID, ENTRY_ID
  FROM OS_CURRENTSTEP
  WHERE OS_CURRENTSTEP.START_DATE < '<your date>'
  UNION SELECT STEP_ID, ENTRY_ID
  FROM OS_HISTORYSTEP
  WHERE OS_HISTORYSTEP.START_DATE < '<your date>'
  AND OS_HISTORYSTEP.FINISH_DATE > '<your date>' ) As STEP,
  (SELECT changeitem.OLDVALUE AS VAL, changegroup.ISSUEID AS ISSID
  FROM changegroup, changeitem
  WHERE changeitem.FIELD = 'Workflow'
  AND changeitem.GROUPID = changegroup.ID
  UNION SELECT jiraissue.WORKFLOW_ID AS VAL, jiraissue.id as ISSID
  FROM jiraissue) As VALID,
  jiraissue as JI
  WHERE STEP.ENTRY_ID = VALID.VAL
  AND VALID.ISSID = JI.id
 AND JI.project = <proj_id>
  Group By STEP.STEP_ID;

结果是

Status   Count
open       12
closed      13
.....     ....

我想要实现的是这样的事实......其中每天的状态总数开启和关闭。

Date        COUNT(Open)      COUNT(Closed)
12-1-2012     12                 1
13-1-2012      14                5 

1 个答案:

答案 0 :(得分:1)

一般策略是:

从一个月中所有日期的表中选择

LEFT OUTER加入你的桌子,获取每天的计数

(如果当天没有条目,则需要左外连接,您希望它显示零值。)

所以我认为这大致是你所需要的(不完整和日期函数语法可能对你的数据库有误,但它会让你更接近):

SELECT aDate
, COALESCE(SUM(CASE WHEN IssueStatus = 'whateverMeansOpen' THEN 1 END,0)) OpenCount
, COALESCE(SUM(CASE WHEN IssueStatus = 'whateverMeansClosed' THEN 1 END,0)) ClosedCount
FROM
(
    SELECT DATEADD(DAY, I, @START_DATE)  aDate
    FROM 
    (
        SELECT number AS I FROM [SomeTableWithAtLeast31Rows]
        where number between 1 and 31
    ) Numbers
    WHERE DATEADD(DAY, I, @START_DATE) < @END_DATE
) DateTimesInInterval 
LEFT OUTER JOIN
(
    Put your query here. It needs to output two columns, DateTimeOfIssue and IssueStatus
) yourHugeQuery ON yourHugeQuery.DateTimeOfIssue BETWEEN aDate and DATEADD(DAY, 1, aDate)
GROUP BY aDate
ORDER BY aDate