基于多个表的总和计算百分比的SQL查询

基于多个表的总和计算百分比的SQL查询,sql,select,join,group-by,Sql,Select,Join,Group By,我试图计算每个控制台平台的游戏会话的百分比。我正在根据两个不同sessess表中的数据计算使用率(一个只有摘要,另一个是每个控制台的汇总)。这是可行的,我可以将总nr或会话合计到T3的SessionTotal中。因此,这段代码几乎可以工作,只是似乎无法让外部选择进行验证。有人能帮我吗 SELECT T3.Sessions, T3.Console, T3.Sessions * 100 / T2.SessionTotal AS Percentage FROM ( -- This call

我试图计算每个控制台平台的游戏会话的百分比。我正在根据两个不同sessess表中的数据计算使用率(一个只有摘要,另一个是每个控制台的汇总)。这是可行的,我可以将总nr或会话合计到T3的SessionTotal中。因此,这段代码几乎可以工作,只是似乎无法让外部选择进行验证。有人能帮我吗

SELECT T3.Sessions, T3.Console, T3.Sessions * 100 /  T2.SessionTotal AS Percentage
FROM
(
    -- This call returns a total nr of sessions played
    SELECT        SUM(Sessions) as SessionTotal 
    FROM

    (SELECT        Sessions, Console, SystemID
    FROM            (SELECT        TOP (100) PERCENT ISNULL(MIN(ps.SessionCount), 0) + ISNULL(COUNT(s.system_id), 0) AS Sessions, MIN(c.name) AS Console, MIN(c.id) AS SystemID
                      FROM            dbo.[Systems] AS c LEFT OUTER JOIN
                                                dbo.Sessions AS s ON c.id = s.system_id LEFT OUTER JOIN
                                                dbo.PreviousSessions AS ps ON c.id = ps.SystemID
                      GROUP BY c.id) AS T1) as T2,                                                
    -- This call returns nr of sessions per system
    SELECT        Sessions, Console, SystemID
    FROM            (SELECT        TOP (100) PERCENT ISNULL(MIN(ps.SessionCount), 0) + ISNULL(COUNT(s.system_id), 0) AS Sessions, MIN(c.name) AS Console, MIN(c.id) AS SystemID
                      FROM            dbo.[Systems] AS c LEFT OUTER JOIN
                                                dbo.Sessions AS s ON c.id = s.system_id LEFT OUTER JOIN
                                                dbo.PreviousSessions AS ps ON c.id = ps.SystemID
                      GROUP BY c.id) AS T3
)

您正在使用哪些RDBMS?Sql Server、MySql、PostGres、Sql lite?非常感谢,就这样。我知道这应该很简单,我就是想不出来。
declare @SessionTotal float = 

(

    SELECT        SUM(Sessions) as SessionTotal 
    FROM

    (SELECT        Sessions, Console, SystemID
    FROM            (
                     SELECT TOP (100) PERCENT ISNULL(MIN(ps.SessionCount), 0) + ISNULL(COUNT(s.system_id), 0) AS Sessions, MIN(c.name) AS Console, MIN(c.id) AS SystemID
                      FROM  dbo.[Systems] AS c 
                      LEFT OUTER JOIN dbo.Sessions AS s 
                      ON c.id = s.system_id 
                      LEFT OUTER JOIN dbo.PreviousSessions AS ps 
                      ON c.id = ps.SystemID
                      GROUP BY c.id) AS T1
                      ) as T2 

)   

    SELECT        Sessions, Console,Sessions * 100/@SessionTotal AS Percentage
    FROM            (

                      SELECT TOP (100) PERCENT ISNULL(MIN(ps.SessionCount), 0) + ISNULL(COUNT(s.system_id), 0) AS Sessions, MIN(c.name) AS Console, MIN(c.id) AS SystemID
                      FROM  dbo.[Systems] AS c 
                      LEFT OUTER JOIN dbo.Sessions AS s 
                      ON c.id = s.system_id 
                      LEFT OUTER JOIN dbo.PreviousSessions AS ps 
                      ON c.id = ps.SystemID
                      GROUP BY c.id
                     ) AS T3