Как получить последние n записей в группе подзапросов? - PullRequest
1 голос
/ 11 октября 2011

MySQL 5.5 - в моих журналах таблиц как суммировать значения n самых последних записей для user_id для всех user_ids?

CREATE  TABLE `logs` (
  `id` INT NOT NULL ,
  `user_id` INT NULL ,
  `value` INT NULL ,
  `date_created` DATETIME NULL ,
  PRIMARY KEY (`id`) );

Ответы [ 3 ]

2 голосов
/ 11 октября 2011

Это топ номер для каждой проблемы группы. На этой странице есть хорошая информация о том, что вы пытаетесь сделать:

http://www.artfulsoftware.com/infotree/queries.php#104

1 голос
/ 11 октября 2011

Попробуйте этот запрос:

SELECT   `user_id`, SUM(`value`)
FROM     logs` as l
WHERE    (SELECT COUNT(*)
          FROM `logs`
          WHERE `user_id` = l.`userid` AND `date_created` > l.`date_created`) < 3
GROUP BY `user_id`

Обратите внимание, я не проверял его, поэтому может потребоваться небольшая настройка.

0 голосов
/ 11 октября 2011
SELECT SUM(*) `TotalSum`
  FROM `logs` log
 INNER JOIN (SELECT MAX(`date_created`) createdDate, id FROM `logs` GROUP BY `user_id`) temp
    ON temp.id=log.id
 GROUP BY log.`user_id`;
...