[英]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.