IF NOT EXISTS (SELECT * FROM sysobjects WHERE type = 'P' AND name = 'ComtradeMPXAXD_LogonDurationDistribution_DataGet')
BEGIN
EXECUTE ('CREATE PROCEDURE dbo.[ComtradeMPXAXD_LogonDurationDistribution_DataGet] AS RETURN 1')
END
GO
SET @execStr = '
BEGIN WITH
IntervalCount AS (
SELECT
CASE
WHEN [CompleteLogonTime] <= 5000 THEN ''0-5''
WHEN [CompleteLogonTime] > 5000 AND [CompleteLogonTime] <= 10000 THEN ''5-10''
WHEN [CompleteLogonTime] > 10000 AND [CompleteLogonTime] <= 15000 THEN ''10-15''
WHEN [CompleteLogonTime] > 15000 AND [CompleteLogonTime] <= 20000 THEN ''15-20''
WHEN [CompleteLogonTime] > 20000 AND [CompleteLogonTime] <= 25000 THEN ''20-25''
WHEN [CompleteLogonTime] > 25000 AND [CompleteLogonTime] <= 30000 THEN ''25-30''
WHEN [CompleteLogonTime] > 30000 AND [CompleteLogonTime] <= 35000 THEN ''30-35''
WHEN [CompleteLogonTime] > 35000 AND [CompleteLogonTime] <= 40000 THEN ''35-40''
WHEN [CompleteLogonTime] > 40000 AND [CompleteLogonTime] <= 45000 THEN ''40-45''
WHEN [CompleteLogonTime] > 45000 AND [CompleteLogonTime]<= 50000 THEN ''45-50''
WHEN [CompleteLogonTime] > 50000 AND [CompleteLogonTime] <= 55000 THEN ''50-55''
WHEN [CompleteLogonTime] > 55000 AND [CompleteLogonTime] <= 60000 THEN ''55-60''
WHEN [CompleteLogonTime] > 60000 THEN ''60+''
END AS Label, 1 AS Occurences, logonP.StartDate, logonP.EndDate, (CompleteLogonTime/1000) AS LogonDuration, connection.ME_DeliveryGroupRowId, DG.DisplayName as DeliveryGroup, DG.Name as Id,#ManagedEntityDG.SiteId as SiteId, Site.DisplayName as SiteName
FROM ComtradeMPXAXD.vCTXAXDLogonPerformance AS logonP
INNER JOIN ComtradeMPXAXD.vCTXAXDConnection as connection
on connection.CTXAXDConnectionRowId = logonP.CTXAXDConnectionRowId
INNER JOIN vManagedEntity as DG on connection.ME_DeliveryGroupRowId = DG.ManagedEntityRowId
INNER JOIN #ManagedEntityDG on #ManagedEntityDG.ManagedEntityRowId = DG.ManagedEntityRowId
INNER JOIN vManagedEntity as Site on Site.ManagedEntityRowId = #ManagedEntityDG.SiteId
WHERE (connection.Failure = 0 OR connection.Failure IS NULL)
AND logonP.[StartDate] BETWEEN DATEADD(minute, ' + cast (-@GMTDiff as nvarchar(10)) + ', ''' + CONVERT(VARCHAR, @StartDate_BaseValue, 126) + ''') AND DATEADD(minute, ' + cast (-@GMTDiff as nvarchar(10)) + ', ''' + CONVERT(VARCHAR, @EndDate_BaseValue, 126) + ''')
),ManagementEntities AS (
SELECT
vMEServer.DisplayName AS DeliveryGroup,
vMEServer.FullName AS FullName,
vMEFarm.ManagedEntityRowId AS SiteRowId,
vMEFarm.DisplayName AS SiteName,
vMEServer.ManagedEntityRowId AS ManagedEntityRowId
FROM #ManagedEntityDG AS baseTable
-- Farms
LEFT JOIN vManagedEntity AS vMEFarm
ON vMEFarm.ManagedEntityRowId = baseTable.SiteId
-- Server
LEFT JOIN vManagedEntity AS vMEServer
ON vMEServer.ManagedEntityRowId = baseTable.ManagedEntityRowId
),Intervals AS (
SELECT 0 as NumOrder, 0 as Occurences, ''0-5'' as Label, NULL AS FullName, NULL AS DisplayName
UNION ALL SELECT 1, 0, ''5-10'', NULL, NULL
UNION ALL SELECT 2, 0, ''10-15'', NULL, NULL
UNION ALL SELECT 3, 0, ''15-20'', NULL, NULL
UNION ALL SELECT 4, 0, ''20-25'', NULL, NULL
UNION ALL SELECT 5, 0, ''25-30'', NULL, NULL
UNION ALL SELECT 6, 0, ''30-35'', NULL, NULL
UNION ALL SELECT 7, 0, ''35-40'', NULL, NULL
UNION ALL SELECT 8, 0, ''40-45'', NULL, NULL
UNION ALL SELECT 9, 0, ''45-50'', NULL, NULL
UNION ALL SELECT 10, 0, ''50-55'', NULL, NULL
UNION ALL SELECT 11, 0, ''55-60'', NULL, NULL
UNION ALL SELECT 12, 0, ''60+'', NULL, NULL
) INSERT INTO #Temp SELECT
ivl.NumOrder,
ISNULL(cnt.Occurences, 0) AS Occurences,
cnt.Label as LoginTime,
cnt.DeliveryGroup,
cnt.SiteId,
cnt.ME_DeliveryGroupRowId,
cnt.SiteName
FROM Intervals AS ivl
INNER JOIN IntervalCount cnt ON cnt.label = ivl.Label
UNION ALL
SELECT ivls.NumOrder,
ivls.Occurences,
ivls.Label as LoginTime,
me.DeliveryGroup,
me.SiteRowId,
me.ManagedEntityRowId,
me.SiteName
FROM ManagementEntities as me, Intervals as ivls
ORDER BY ivl.NumOrder
END
'
EXECUTE (@execStr)
--SELECT * FROM #Temp
SELECT NumOrder,LoginTime, COUNT(DGid) -1 AS NumberOfOccurences, DGid, DeliveryGroup, SiteName, SiteId
FROM #Temp
GROUP BY DGid, LoginTime, DeliveryGroup, SiteName, SiteId, NumOrder
ORDER BY NumOrder
DROP TABLE #Temp
DROP TABLE #ManagedEntity
DROP TABLE #ManagedEntityDG