2016-06-07 4 views
0

Как я могу рассчитывать NumOfGames% за продукт, такой как % = TOTAL/PERPRODUT_TYPE. Вот мой запрос для TOTAL NumOfGamesКоличество пользователей на продукт

SELECT  
     DPT.[Name] [ProductType], 
     SUM([FinishedGameCycleCount]) [NumOfGames] 
    FROM [WarehouseMgmt].[FactGameAgr] FWA 
    JOIN [WarehouseMgmt].[DimPlayer] DPL ON FWA.[PlayerId] = DPL.[Id] 
    JOIN [WarehouseMgmt].[DimGame] DG ON FWA.[GameId] = DG.[Id] 
    JOIN [WarehouseMgmt].[DimProductType] DPT ON DPT.Id = FWA.ProductTypeId 
    WHERE [WarehouseMgmt].[GetDateTimeFromTimeId](TimeId) >= Dateadd(Month, Datediff(Month, 0, DATEADD(m, -6, current_timestamp)), 0) 
    GROUP BY DPT.[Name] 

ответ

1

Используйте SUM() OVER()

SELECT  
     DPT.[Name] [ProductType], 
     SUM([FinishedGameCycleCount]) [NumOfGames], 
     SUM([FinishedGameCycleCount]) *100./SUM(SUM([FinishedGameCycleCount])) OVER() [percentage] 
    FROM [WarehouseMgmt].[FactGameAgr] FWA 
    JOIN [WarehouseMgmt].[DimPlayer] DPL ON FWA.[PlayerId] = DPL.[Id] 
    JOIN [WarehouseMgmt].[DimGame] DG ON FWA.[GameId] = DG.[Id] 
    JOIN [WarehouseMgmt].[DimProductType] DPT ON DPT.Id = FWA.ProductTypeId 
    WHERE [WarehouseMgmt].[GetDateTimeFromTimeId](TimeId) >= Dateadd(Month, Datediff(Month, 0, DATEADD(m, -6, current_timestamp)), 0) 
    GROUP BY DPT.[Name]