Группировка результатов MySQL позволяет добавить запись к итогу только в том случае, если последняя найденная старше двух часов - PullRequest
1 голос
/ 13 октября 2011

В настоящее время я отслеживаю действия, выполняемые сотрудниками в таблице, которая состоит из трех строк: id, user_id и action_time, customer_id. Чтобы отслеживать производительность, я могу просто выбрать сотрудника на свидание и подсчитать, какие действия он выполнил, просто peasy.

SELECT COUNT(DISTINCT `customer_id`) AS `action_count` 
FROM   `actions` 
WHERE  `user_id` = 1 
AND    DATE(`action_time`) = DATE(NOW()) 

Однако теперь я хочу сделать так, чтобы действия, выполненные с интервалом более двух часов, классифицировались как два действия по отношению к общему количеству. Я рассмотрел группировку по HOUR() / 2, но действие, выполненное в 9:59 и 10:01, будет считаться двумя, что не совсем то, что я хочу.

У кого-нибудь есть идеи?

1 Ответ

0 голосов
/ 15 октября 2011

Вы должны самостоятельно присоединиться к таблице actions , попробуйте что-то вроде этого:

SELECT COUNT(DISTINCT id) FROM (
  SELECT a1.id, ABS(UNIX_TIMESTAMP(a1.action_time) - UNIX_TIMESTAMP(a2.action_time))>=7200 
  AS action_time_diff FROM actions a1 JOIN actions a2 ON a1.user_id=a2.user_id) AS t 
WHERE action_time_diff = 1

Не уверен, что это работает, возможно, вам следует предоставить более точные сведения о структуре таблицы.

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