我有一个包含两个表的数据库 - 一个,州,包含有关每个州的所得税的信息,第二个,括号,包含通过数字键连接到州的每个州的税级。
我想使用 SQL 来检索每个州和每个州的平均税级金额以在记录集中输出。例如:
STATES
id name
1 Alabama
BRACKETS
id bracket amount
1 5% 1000
1 7% 2000
1 8% 10000
如何用最少的 SQL 调用做到这一点?
SELECT s.name,Avg(b.bracket) as AverageTax FROM STATES s INNER JOIN BRACKETS b
ON s.numerickey=b.numerickey
GROUP BY s.id,s.name,b.bracket
你想做的在数学上是不正确的。你不能这样平均税率。您需要知道每个税率有多少人才能获得平均税率。此计算将给出 6.67 的值(四舍五入并假设您将税率存储在十进制字段而不是整数字段中(当然,您永远不会对浮点数进行任何类型的计算!))。
但是假设 10,000,000 人的税率为 A,1,000,000 人的税率为 B,100 人的税率为 c。现在实际平均税率为5.09%。
SELECT AVG(`bracket`) FROM `BRACKETS` GROUP BY `id`