MySQL групповой лимитный запрос - PullRequest
1 голос
/ 10 августа 2009

Скажем, у меня есть стол:

create table foo (
  corp_id int not null,
  tdate date not null,
  sec_id int unsigned not null,
  amount int unsigned not null,
  primary key (corp_id, sec_id, tdate)
);

Следующий запрос вернет сумму столбца суммы для всех corp_id и дат:

select corp_id, tdate, sum(amount) from foo group by corp_id, tdate;

Как теперь можно ограничить этот запрос, чтобы он возвращал только первые 5 самых последних дат для corp_id?

1 Ответ

3 голосов
/ 10 августа 2009

Вы можете использовать подзапрос, чтобы определить, какая пятая дата была для каждого corp_id:

select
    corp_id,
    tdate,
    sum(amount)
from
    foo f
where
    tdate >= 
         (select tdate 
          from foo 
          where corp_id = f.corp_id 
          order by tdate desc 
          limit 1 offset 4)

limit 1 offset 4 означает, что вы переходите к пятой записи запроса, а затем выбираете только одну строку. Проверьте MySQL документы для получения дополнительной информации о LIMIT и OFFSET.

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