2010-10-18 30 views
1

J'ai une base de données contenant deux tables - une, états, contient des informations sur les impôts sur le revenu de chaque état, et la seconde, entre parenthèses, chaque état connecté aux États par une clé numérique.Comment obtenir des taux d'imposition moyens avec SQL à partir d'une relation un-à-plusieurs

Je voudrais utiliser SQL pour récupérer chaque état et le montant de la taxe moyenne pour chaque état à produire dans un jeu d'enregistrements. Par exemple:

STATES 

id name 
1 Alabama 

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

Comment faire cela avec le moins d'appels SQL?

Répondre

1
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

Cela a fonctionné parfaitement, merci! – MarathonStudios

0
SELECT AVG(`bracket`) FROM `BRACKETS` GROUP BY `id` 
0

Qu'est-ce que vous voulez faire est incorrecte mathmatically. Vous ne pouvez pas calculer les taux d'imposition moyens de cette façon. Vous devez savoir combien de personnes sont à chaque taux pour obtenir le taux d'imposition moyen. Ce calcul donnerait une valeur de 6,67 (arrondie et en supposant que vous avez stocké les taux d'imposition dans un champ décimal et non un nombre entier (et bien sûr, vous ne feriez jamais un calcul de n'importe quel type sur un flottant!)).

Toutefois, supposons que 10 000 000 de personnes sont dans le tarif int. A, 1 000 000 de personnes dans le taux d'imposition B et 100 dans le taux d'imposition c. Maintenant, le taux d'imposition moyen réel est de 5,09%.

+0

Je sais ce que vous voulez dire, mais j'ai juste besoin d'un moyen simple de comparer les tranches d'imposition relatives de plusieurs États - il n'est pas nécessaire d'être assez précis pour tenir compte de la population. – MarathonStudios