Skip to main content
Version: Early Access

MiscellaneousQueries

This topic explains how to use the miscellaneous queries in Agility.

Projects a Member can view

            select P.ProjectKey,ProjectName
from Dim.Project as P
join Bridge.ProjectMember PM on PM.ProjectKey = P.ProjectKey
join Dim.Member M on PM.MemberKey = M.MemberKey
where MemberName = 'Andre Agile'
order by P.ProjectPath

Cycle Time

            declare @beginValue nvarchar(25), @endValue nvarchar(25);
set @beginValue='In Progress';
set @endValue='Accepted';

WITH PWIDate AS (
select ProjectKey,Estimate, FirstDateKey, LastDateKey
from
(SELECT ProjectKey,WorkitemKey,Estimate,MIN(DateKey) AS FirstDateKey
FROM Fact.Workitem as PWI
INNER JOIN Dim.WorkitemStatus WIS ON PWI.WorkitemStatusKey = WIS.WorkitemStatusKey
INNER JOIN Dim.AssetType AT ON PWI.AssetTypeKey = AT.AssetTypeKey
where WorkitemStatusName=@beginValue and (AssetTypeName = 'Story' or AssetTypeName = 'Defect')
GROUP BY ProjectKey,WorkitemKey,Estimate) A
join
(SELECT WorkitemKey, Min(DateKey) AS LastDateKey
FROM Fact.Workitem as PWI
INNER JOIN Dim.WorkitemStatus WIS ON PWI.WorkitemStatusKey = WIS.WorkitemStatusKey
INNER JOIN Dim.AssetType AT ON PWI.AssetTypeKey = AT.AssetTypeKey
where WorkitemStatusName=@endValue and (AssetTypeName = 'Story' or AssetTypeName = 'Defect')
GROUP BY WorkitemKey)B on A.WorkitemKey=B.WorkitemKey)
, PWIDateDiff AS (
SELECT ProjectKey,Estimate,DATEDIFF(DD,DMIN.Date,DMAX.Date) CycleTime
FROM PWIDate
INNER JOIN Dim.Date DMIN ON PWIDate.FirstDateKey = DMIN.DateKey
INNER JOIN Dim.Date DMAX ON PWIDate.LastDateKey = DMAX.DateKey)

SELECT Estimate,AVG(CycleTime) [AverageCycleTimeinDays]
FROM PWIDateDiff
join Dim.Project on PWIDateDiff.ProjectKey = Project.ProjectKey
where ProjectName='Release 1.0'
GROUP BY Estimate
Order by Estimate

CycleTime with Workitem Counts

            select Estimate, Avg(CycleTime) AverageCycleTime, count(*) WorkitemCount
from
(
select
PrimaryWorkitem.PrimaryWorkitemKey,
CycleBeginKey, BeginDate.Date CycleBeginDate,
CycleEndKey, EndDate.Date CycleEndDate,
CycleTime=cast(DateDiff(D, BeginDate.Date, EndDate.Date) as float),
Estimate=(select top 1 Estimate from Fact.PrimaryWorkitem P where P.PrimaryWorkitemKey=PrimaryWorkitem.PrimaryWorkitemKey)
from Dim.PrimaryWorkitem
join (
select min(DateKey) CycleBeginKey, PrimaryWorkitemKey
from Fact.PrimaryWorkitem
join Dim.WorkitemStatus on WorkitemStatus.WorkitemStatusKey=PrimaryWorkitem.WorkitemStatusKey
where WorkitemStatusName in ('In Progress', 'Done')
group by PrimaryWorkitemKey
) B on B.PrimaryWorkitemKey=PrimaryWorkitem.PrimaryWorkitemKey
join (
select min(DateKey) CycleEndKey, PrimaryWorkitemKey
from Fact.PrimaryWorkitem
join Dim.WorkitemStatus on WorkitemStatus.WorkitemStatusKey=PrimaryWorkitem.WorkitemStatusKey
where WorkitemStatusName in ('Accepted')
group by PrimaryWorkitemKey
) E on E.PrimaryWorkitemKey=PrimaryWorkitem.PrimaryWorkitemKey
join Dim.Date BeginDate on BeginDate.DateKey=CycleBeginKey
join Dim.Date EndDate on EndDate.DateKey=CycleEndKey
--where BeginDate.Date>'2009-08-27'
) CycleTimes
group by Estimate