Из этой же базы никак, если данные удаляются за три часа, то за 24 часа там не будет данных, что логично...
Если нужно, то делаем следующее:
1) Делаем запрос в базу:
CREATE TABLE IF NOT EXISTS `db_bonstat` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`add`int(11) NOT NULL DEFAULT 0,
`del`int(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
2) В верху в файле бонуса ищем примерно это:
$ddel = time() + 60*60*3;
$dadd = time();
Ниже добавляем:
$s = time() + 60*60*24;
3) Там же добавляем:
$st = $db->query('SELECT * FROM `db_bonstat`')->numRows();
4) Ищем строку:
# Вносим запись в список бонусов
$db->query('INSERT INTO db_bonus (`login`, `uid`, `sum`, `add`, `del`) VALUES (?,?,?,?,?)', array($login, $uid, $sum, $dadd, $ddel));
Ниже добавляем:
#Запись в стату за 24 часа
$db->query('INSERT INTO db_bonstat (`add`, `del`) VALUES (?,?)', array($dadd, $s));
5) Ищем строку:
# Случайная очистка устаревших записей
$db->query("DELETE FROM db_bonus WHERE `del` < '$dadd'");
Ниже добавляем:
#Удаляем лишнее из статы
$db->query("DELETE FROM db_bonstat WHERE `del` < '$dadd'");
6)Выводим данные в нужном месте: ( должно быть ниже чем строка из пункта 3 )
За 24 часа получено <?=$st;?> бонусов
P.S. не проверял, но по теории должно работать.