mySql суммирует столбец и возвращает только записи с и записью за последние 10 минут - PullRequest
0 голосов
/ 31 июля 2010

вот таблица, время выполнения запроса, т.е. сейчас 2010-07-30 22: 41: 14

number | person | timestamp
45       mike     2008-02-15 15:31:14
56       mike     2008-02-15 15:30:56
67       mike     2008-02-17 13:31:14
34       mike     2010-07-30 22:31:14
56       bob      2009-07-30 22:37:14
67       bob      2009-07-30 22:37:14
22       tom      2010-07-30 22:37:14
78       fred     2010-07-30 22:37:14

Я бы хотел запрос, который может сложить номер для каждого человека. Затем отображать только итоговые имена, которые имеют последние записи, скажем, последние 60 минут. Похоже, сложность заключается в том, что, хотя можно использовать AND timestamp> now () - INTERVAL 600, это приводит к остановке полной суммы числа.

результаты, которые я бы сделал сверху:

Mike 202
tom  22
fred 78

Боб не включен, его последняя запись недостаточно свежая, ей год! Майк, хотя у него есть несколько старых записей, действителен, потому что у него недавно была одна запись - но ключ, он все равно складывает его полный «номер», а не только те, которые имеют период времени.

продолжай в том же духе! и спасибо

у.

Ответы [ 2 ]

1 голос
/ 31 июля 2010

Вы хотите HAVING предложение:

select name, sum(number), max(timestamp_column)
from table
group by name
HAVING max( timestamp_column) > now( ) - INTERVAL 600;
0 голосов
/ 31 июля 2010

andrew - в духе образования я не собираюсь показывать запрос (на самом деле, я ленивый, но никому не говорю):).Я должен был сделать отбор в рамках вашего основного критерия выбора.в коде псевдо это будет:

select person, total as (select sum(number) from table1 t2 where t2.person=t1.person) 
from table1 t1 where timestamp > now( ) - INTERVAL 600

, который взорвется, но вы получите суть ... Джим

...