I tried asking around and googling and I have ended up with a query that kills the DB in every possible sense.
I have 3 tables:
jiraissue
keeps information about jira tickets (who its assigned to).
changegroup
this keeps change date, the id of the ticket being changed and an id to the change details.
changeitem
contains the change id, the change field and new/old values.
I want the following output:
[time_taken_to_resolve],[assigned_date],[resolve_date],[jira_ticket_details_from_jiraissue]
Criteria is jiraissue.ASSIGNEE value.
I came up with the following:
SELECT TIMESTAMPDIFF(HOUR,a.assigned_date,b.resolved_date),a.*, b.*
FROM jiraissue
INNER JOIN (
SELECT changegroup.CREATED as "assigned_date",changegroup.issueid as jid
FROM changegroup
JOIN changeitem ON changegroup.ID = changeitem.groupid
WHERE changeitem.FIELD="assignee"
GROUP BY changegroup.issueid
ORDER BY changegroup.CREATED DESC
) as a ON a.jid = jiraissue.id
INNER JOIN (
SELECT changegroup.CREATED as "resolved_date", changegroup.issueid as jid
FROM changegroup
JOIN jiraissue on changegroup.issueid = jiraissue.ID
JOIN changeitem ON changegroup.ID = changeitem.groupid
WHERE changeitem.FIELD="status" AND changeitem.NEWVALUE=5
GROUP BY changegroup.issueid
ORDER BY changegroup.CREATED DESC
) as b ON b.jid = jiraissue.id
WHERE jiraissue.ASSIGNEE = "gangsta";
The above query works if I use a specific jiraissue.id
, but not if I search by jiraissue.ASSIGNEE
(it carries on crunching).
Also I am interested in the latest resolved and assigned dates, there could be many, but i want the last one of each.
Any help is greatly appreciated.
Thank you.
Came up with this, seems to do the trick:
SELECT TIMESTAMPDIFF(HOUR,a.assigned_date,b.resolved_date),a.*, b.*,jiraissue.*
FROM jiraissue
INNER JOIN (
SELECT MAX(changegroup.CREATED) as "assigned_date",changegroup.issueid as jid
FROM changegroup
JOIN jiraissue as ji1 ON changegroup.issueid=ji1.id
JOIN changeitem ON changegroup.ID = changeitem.groupid
WHERE changeitem.FIELD="assignee" AND ji1.ASSIGNEE="gangsta" AND issuetype = 5 AND PRIORITY = 4
GROUP BY changegroup.issueid
) as a ON a.jid = jiraissue.id
INNER JOIN (
SELECT MAX(changegroup.CREATED) as "resolved_date", changegroup.issueid as jid
FROM changegroup
JOIN jiraissue as ji2 ON changegroup.issueid=ji2.id
JOIN changeitem ON changegroup.ID = changeitem.groupid
WHERE changeitem.FIELD="status" AND changeitem.NEWVALUE=5 AND ji2.ASSIGNEE="gangsta" AND issuetype = 5 AND PRIORITY = 4
GROUP BY changegroup.issueid
) as b ON b.jid = jiraissue.id
ORDER BY b.resolved_date DESC;
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.