繁体   English   中英

在SQL中划分两个查询然后分组

[英]Divide two queries in SQL then group by

我正在寻找新帐户和所有帐户之间的费率变化,我在下面列出了两个查询。 我需要通过AllAccounts划分NewAccounts,在同一个查询中获取该百分比并按城镇分组。 谢谢

SELECT DISTINCT  Count(NewAccounts), Town
FROM   (SELECT Stuff)
WHERE   (Newaccounts)
Group By Town
;
SELECT DISTINCT  Count(AllAccounts), Town
FROM   (SELECT DifferentSTUFF)
WHERE   (AllAccounts)
Group By Town

您需要将查询重写为子查询并将它们连接在一起:

SELECT  CAST(na.NewAccounts AS FLOAT) / aa.AllAccounts
FROM    (   SELECT Count(NewAccounts) AS NewAccounts, Town
            FROM   (SELECT Stuff)
            WHERE   (Newaccounts)
            GROUP BY Town
        ) na
        INNER JOIN
        (   SELECT Count(AllAccounts) AS AllAccounts, Town
            FROM   (SELECT DifferentSTUFF)
            WHERE   (AllAccounts)
            GROUP BY Town
        ) aa
            ON aa.Town = na.Town;

我从两个查询中删除了DISTINCT ,因为它是多余的。 NewAccounts上浮动的NewAccounts转换是为了避免将结果整数除法隐式转换回整数。

根据每个查询中的数据可用性,您可能需要稍微改变一下,即如果您不会总是在城镇的新帐户中有结果,那么最好将其写为:

SELECT  CAST(COALESCE(na.NewAccounts, 0) AS FLOAT) / aa.AllAccounts
FROM    
        (   SELECT Count(AllAccounts) AS AllAccounts, Town
            FROM   (SELECT DifferentSTUFF)
            WHERE   (AllAccounts)
            GROUP BY Town
        ) aa
        LEFT JOIN
        (   SELECT Count(NewAccounts) AS NewAccounts, Town
            FROM   (SELECT Stuff)
            WHERE   (Newaccounts)
            GROUP BY Town
        ) na
            ON aa.Town = na.Town

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM