Как получить среднюю ставку налога с SQL из отношения один ко многим - PullRequest
1 голос
/ 18 октября 2010

У меня есть база данных, содержащая две таблицы: одна, штаты, содержит информацию о подоходных налогах каждого штата, а вторая, в скобках, содержит налоговые скобки для каждого штата, подключенного к штатам с помощью числового ключа.

Я хотел бы использовать SQL для получения каждого состояния и среднюю сумму налога для каждого состояния для вывода в наборе записей.Например:

STATES

id name
1  Alabama

BRACKETS
id bracket amount
1  5%      1000
1  7%      2000
1  8%      10000

Как я могу сделать это с наименьшим количеством вызовов SQL?

Ответы [ 3 ]

1 голос
/ 18 октября 2010
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
0 голосов
/ 18 октября 2010

То, что вы хотите сделать, математически неверно.Вы не можете усреднить налоговые ставки таким образом.Вам нужно знать, сколько человек по каждой ставке, чтобы получить среднюю ставку налога.Это вычисление даст значение 6,67 (округленное и предполагающее, что вы сохранили налоговые ставки в десятичном поле, а не в целочисленном поле (и, конечно, вы никогда не будете выполнять какие-либо вычисления для числа с плавающей точкой!)).1002 * однако предположим, что 10 000 000 человек облагаются налогом по ставке A, 1 000 000 человек - по налоговой ставке B, а 100 человек - по налоговой ставке c.Сейчас реальная средняя ставка налога составляет 5,09%.

0 голосов
/ 18 октября 2010
SELECT AVG(`bracket`) FROM `BRACKETS` GROUP BY `id`
...