SQL:
SELECT
st.state_name AS 'Location',
COUNT(DISTINCT(oh.outfitterid)) AS '#_of_Outfitters',
COUNT(*) AS '#_of_Hunts',
ROUND((AVG(oh.hunt_minprice) + AVG(oh.hunt_maxprice)) / 2) AS 'Average_Cost',
oh.hunt_state AS 'state_id'
FROM species sp
JOIN outfitters_hunts as oh ON sp.id = oh.hunt_species
JOIN outfitters as of ON oh.outfitterid = of.id
JOIN states AS st ON st.id = oh.hunt_state
WHERE sp.id = 47
AND oh.hunt_weapon = 1
AND oh.enabled = 1
AND of.enabled = 1
GROUP BY st.id
ORDER BY 2 DESC
LIMIT 10