Advertisement
simonradev

User in Games with Their Statistics

Sep 17th, 2017
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 4.00 KB | None | 0 0
  1. WITH UserInGamesAggregatedItems_CTE (Username,
  2.                                      [Game Name],
  3.                                      [Item Stenght Sum],
  4.                                      [Item Defence Sum],
  5.                                      [Item Speed Sum],
  6.                                      [Item Mind Sum],
  7.                                      [Item Luck Sum])
  8. AS
  9. (
  10.     SELECT u.Username,
  11.            g.Name AS [Game Name],
  12.            SUM(s.Strength) AS [Item Stenght Sum],
  13.            SUM(s.Defence) AS [Item Defence Sum],
  14.            SUM(s.Speed) AS [Item Speed Sum],
  15.            SUM(s.Mind) AS [Item Mind Sum],
  16.            SUM(s.Luck) AS [Item Luck Sum]
  17.      FROM Users AS u
  18.      INNER JOIN UsersGames AS ug
  19.      on u.Id = ug.UserId
  20.      INNER JOIN Games AS g
  21.      ON ug.GameId = g.Id
  22.      INNER JOIN UserGameItems AS ugi
  23.      ON ug.Id = ugi.UserGameId
  24.      INNER JOIN Items AS i
  25.      ON ugi.ItemId = i.Id
  26.      INNER JOIN [Statistics] AS s
  27.      ON i.StatisticId = s.Id
  28.      GROUP BY u.Username,
  29.               g.Name
  30. ),
  31. UserInGamesAggregatedCharacters_CTE (Username,
  32.                                      [Game Name],
  33.                                      [Character Name],
  34.                                      [Character Stenght Max],
  35.                                      [Character Defence Max],
  36.                                      [Character Speed Max],
  37.                                      [Character Mind Max],
  38.                                      [Character Luck Max])
  39. AS
  40. (
  41.     SELECT u.Username,
  42.            g.Name AS [Game Name],
  43.            MAX(c.Name) AS [Character Name],
  44.            MAX(s.Strength) AS [Character Stenght Max],
  45.            MAX(s.Defence) AS [Character Defence Max],
  46.            MAX(s.Speed) AS [Character Speed Max],
  47.            MAX(s.Mind) AS [Character Mind Max],
  48.            MAX(s.Luck) AS [Character Luck Max]
  49.      FROM Users AS u
  50.      INNER JOIN UsersGames AS ug
  51.      ON u.Id = ug.UserId
  52.      INNER JOIN Games AS g
  53.      ON ug.GameId = g.Id
  54.      INNER JOIN Characters AS c
  55.      ON ug.CharacterId = c.Id
  56.      INNER JOIN [Statistics] AS s
  57.      ON c.StatisticId = s.Id
  58.      GROUP BY u.Username,
  59.               g.Name
  60. ),
  61. UserInGamesAggregatedGames_CTE (Username,
  62.                                      [Game Name],
  63.                                      [Game Stenght Max],
  64.                                      [Game Defence Max],
  65.                                      [Game Speed Max],
  66.                                      [Game Mind Max],
  67.                                      [Game Luck Max])
  68. AS
  69. (
  70.     SELECT u.Username,
  71.            g.Name AS [Game Name],
  72.            MAX(s.Strength) AS [Game Stenght Max],
  73.            MAX(s.Defence) AS [Game Defence Max],
  74.            MAX(s.Speed) AS [Game Speed Max],
  75.            MAX(s.Mind) AS [Game Mind Max],
  76.            MAX(s.Luck) AS [Game Luck Max]
  77.          FROM Users AS u
  78.          INNER JOIN UsersGames AS ug
  79.          ON u.Id = ug.UserId
  80.          INNER JOIN Games AS g
  81.          ON ug.GameId = g.Id
  82.          INNER JOIN GameTypes AS gt
  83.          ON g.GameTypeId = gt.Id
  84.          INNER JOIN [Statistics] AS s
  85.          ON gt.BonusStatsId = s.Id
  86.          GROUP BY u.Username,
  87.                   g.Name
  88. ),
  89. AggregatedUserInGamesTotalStats_CTE (Username,
  90.                                      GameName,
  91.                                      CharacterName,
  92.                                      TotalStrenght,
  93.                                      TotalDefence,
  94.                                      TotalSpeed,
  95.                                      TotalMind,
  96.                                      TotalLuck)
  97. AS
  98. (
  99. SELECT u.Username,
  100.        g.Name,
  101.        c_cte.[Character Name],
  102.        i_cte.[Item Stenght Sum] + c_cte.[Character Stenght Max] + g_cte.[Game Stenght Max] AS [Total Strenght],
  103.        i_cte.[Item Defence Sum] + c_cte.[Character Defence Max] + g_cte.[Game Defence Max] AS [Total Defence],
  104.        i_cte.[Item Speed Sum] + c_cte.[Character Speed Max] + g_cte.[Game Speed Max] AS [Total Speed],
  105.        i_cte.[Item Mind Sum] + c_cte.[Character Mind Max] + g_cte.[Game Mind Max] AS [Total Mind],
  106.        i_cte.[Item Luck Sum] + c_cte.[Character Luck Max] + g_cte.[Game Luck Max] AS [Total Luck]
  107.  FROM Users AS u
  108.  INNER JOIN UsersGames AS ug
  109.  ON u.Id = ug.UserId
  110.  INNER JOIN Games AS g
  111.  ON ug.GameId = g.Id
  112.  INNER JOIN UserInGamesAggregatedItems_CTE AS i_cte
  113.  ON i_cte.Username = u.Username AND
  114.     i_cte.[Game Name] = g.Name
  115.  INNER JOIN UserInGamesAggregatedCharacters_CTE AS c_cte
  116.  ON c_cte.Username = u.Username AND
  117.     c_cte.[Game Name] = g.Name
  118.  INNER JOIN UserInGamesAggregatedGames_CTE AS g_cte
  119.  ON g_cte.Username = u.Username AND
  120.     g_cte.[Game Name] = g.Name
  121.  -- GROUP BY u.Username, g.Name
  122.  --HAVING u.Username = 'skippingside'
  123.  --ORDER BY u.Username ASC,
  124.  --         g.Name ASC
  125. )
  126.  
  127. SELECT DISTINCT *
  128.  FROM AggregatedUserInGamesTotalStats_CTE AS a
  129.  ORDER BY a.TotalStrenght DESC,
  130.           a.TotalDefence DESC,
  131.           a.TotalSpeed DESC,
  132.           a.TotalMind DESC,
  133.           a.TotalLuck DESC
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement