2011-12-10 25 views
3

これは痛いほど単純なはずですが、私は精神的なブロックがあります。SQL - 範囲の平均年齢を持つユーザーの数を取得

ユーザー:

  • ID
  • 生年月日(日時)

User_Visits:

  • SITE_ID私は、SQL Server 2008のデータベース内に3つのテーブルを持っています
  • 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

ありがとうございましたこの1つは魅力的でした! – 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 

だけカウントを取得するには、SELECT一部でcount(siteID)を入れてavg_ageの定義を移動する必要がありますHAVING句に追加します。

関連する問題