2011-12-10 231 views
3

我知道这应该很简单,但我有一个心理障碍。我有一个SQL Server三个表2008数据库:SQL - 获取平均年龄在范围内的用户数

用户:

  • ID
  • 生日(日期时间)

User_Visits:

  • SITE_ID
  • USER_ID
  • VISIT_DATE

网站:

  • ID

我需要得到具有游客的平均年龄网站数的SQL语句说40-50岁。

在此先感谢!

回答

1
select count(*) as SiteCount 
from (
     select avg(datediff(year, U.BirthDate, UV.Visit_Date)) as AvgAge 
     from Users as U 
     inner join User_Visits as UV 
     on U.ID = UV.User_ID 
     group by UV.Site_ID 
    ) as T 
where AvgAge >= 40 and 
     AvgAge < 50 
+0

感谢这一个工作就像一个魅力! – user1091409

0

让我试试。

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子句。