SQL - получить количество пользователей со средним возрастом в диапазоне - PullRequest
3 голосов
/ 10 декабря 2011

Я знаю, что это должно быть больно просто, но у меня психическое расстройство. У меня есть три таблицы в базе данных SQL Server 2008:

Пользователи:

  • ID
  • Дата рождения (дата / время)

User_Visits:

  • Site_ID
  • User_ID
  • Visit_Date

Страницы:

  • ID

Мне нужен оператор SQL, который получает число сайтов, на которых посетители имеют средний возраст, скажем, 40-50 лет.

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 10 декабря 2011
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 голосов
/ 10 декабря 2011

Позвольте мне попробовать:

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...