3
我知道这应该很简单,但我有一个心理障碍。我有一个SQL Server三个表2008数据库:SQL - 获取平均年龄在范围内的用户数
用户:
- ID
- 生日(日期时间)
User_Visits:
- SITE_ID
- USER_ID
- VISIT_DATE
网站:
- ID
我需要得到具有游客的平均年龄网站数的SQL语句说40-50岁。
在此先感谢!
我知道这应该很简单,但我有一个心理障碍。我有一个SQL Server三个表2008数据库:SQL - 获取平均年龄在范围内的用户数
用户:
User_Visits:
网站:
我需要得到具有游客的平均年龄网站数的SQL语句说40-50岁。
在此先感谢!
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
让我试试。
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子句。
感谢这一个工作就像一个魅力! – user1091409