Позвольте мне попробовать:
SELECT siteID, AVG(YEAR(GETDATE()) - YEAR(birthdate)) as avg_age,
FROM users_visits JOIN users ON users.ID = users_visits.userID
GROUP BY siteID HAVING avg_age BETWEEN 40 AND 50
Это вернет все сайты, которые вас интересуют. Чтобы получить только количество, вам нужно поместить count(siteID)
в SELECT
часть и переместить определениеavg_age
к предложению HAVING.