MySQLのソース文についてのご相談
table1
-----------------------
Date,PageTitle,Pageviews
-----------------------
2020/10/1,A,1
2020/10/2,A,1
2020/10/3,A,1
2020/10/4,A,1
2020/10/5,A,1
2020/10/6,A,1
2020/10/7,A,1
2020/10/8,A,1
2020/10/9,A,1
2020/10/10,A,1
2020/10/2,B,1
2020/10/3,B,1
2020/10/4,B,1
2020/10/5,B,1
2020/10/6,B,1
-----------------------
・実現したいこと
PageTitleごとにDateの最小値から7日以内のPageviewsを合計して以下のように出力したい
↓
-----------------------
Date(MIN),PageTitle,SUM(Pageviews)
-----------------------
2020/10/1,A,7
2020/10/2,B,5
-----------------------
これを実現するためにはどのようなSQL文を記述すれば可能でしょうか?
お分かりになる方、ご教授よろしくお願いいたします。
0
ベストアンサー
-
@tokupon さん
こんな感じで実現できるかと思います。
select a.`mindate` , a.`PageTitle` , sum(b.`Pageviews`) as `Pageviews` from ( select -- PageTitle毎の最小日を取得 min(`Date`) as mindate , `PageTitle` from `table1` group by `PageTitle` ) a left join `table1` b on a.`PageTitle` = b.`PageTitle` and b.`Date` < date_add(a.`mindate`, interval 7 day) -- 最小日の7日以内の条件で結合 group by a.`mindate` , a.`PageTitle`
1
答え
-
@tokupon さん
こんな感じで実現できるかと思います。
select a.`mindate` , a.`PageTitle` , sum(b.`Pageviews`) as `Pageviews` from ( select -- PageTitle毎の最小日を取得 min(`Date`) as mindate , `PageTitle` from `table1` group by `PageTitle` ) a left join `table1` b on a.`PageTitle` = b.`PageTitle` and b.`Date` < date_add(a.`mindate`, interval 7 day) -- 最小日の7日以内の条件で結合 group by a.`mindate` , a.`PageTitle`
1 -
ご回答ありがとうございます。
こちらの内容で実現できました。
助かります。1