1

分析データを収集するサイトがいくつかあります。各サイトにはすべての国に関するデータがあり、すべてのサイトが毎月データを取得するわけではありません。

すべてのサイトの最後のデータ セット (同じ日付ではない可能性があります) からの訪問の合計を取得したいと考えています。

MAX() は無効なので where 句では使用できません。

最後の日付を変数として保存しようとしましたが、うまくいきません:

select sites.id, sites.name, SUM(data.visits), @start := MAX(data.start_date)
inner join data on data.profile_id = sites.profile_id
where data.start_date = @start
group by sites.profile_id

サブクエリも試してみましたが、まだうまくいきません。

4

1 に答える 1

4

サブクエリを使用して最大日付を取得し、それを結合します。

select sites.id, sites.name, SUM(data.visits), dp.maxdate
from sites inner join
     data
     on data.profile_id = sites.profile_id inner join
     (select profile_id, MAX(start_date) as maxdate
      from data
      group by profile_id
     ) dp
     on data.profile_id = dp.profile_id and data.start_date = dp.maxdate
group by sites.profile_id, sites.name, dp.maxdate
于 2013-03-27T19:38:17.923 に答える