Помощь с запросом MySQL, основанным на количестве кликов по элементу - PullRequest
1 голос
/ 27 сентября 2010

У меня есть таблица настройки, как это (например, упрощенно):

user_id
item_id
click_dt

У каждого item_id есть много user_id. В основном это хранение кликов по элементам, связанным с user_id.

Я хочу выполнить запрос и перечислить только последний идентификатор_пользователя для каждого элемента_идентификатора, основанный на клике_дт.

Так что, если для item_id 55 есть 5 кликов, последний клик или click_dt DESC будет записью, которую нужно показать ....

Имеет смысл? Любая помощь будет потрясающей ... спасибо!

Ответы [ 2 ]

1 голос
/ 27 сентября 2010

Использование:

SELECT x.*
  FROM YOUR_TABLE x
  JOIN (SELECT t.item_id,
               MAX(t.click_dt) AS max_date
          FROM YOUR_TABLE t
      GROUP BY t.item_id) y ON y.item_id = x.item_id
                           AND y.max_date = x.clicked_dt

Alternate:

SELECT x.item_id,
       x.user_id,
       x.click_dt
  FROM (SELECT t.item_id,
               t.user_id,
               t.click_dt,
               CASE
                 WHEN @item = t.item_id THEN @rownum := @rownum + 1
                 ELSE @rownum := 1
              END AS rk,
              @item := t.item_id
         FROM YOUR_TABLE t
         JOIN (SELECT @rownum := 0, @item := 0) r
     ORDER BY t.itemid, click_dt DESC) x
 WHERE x.rk = 1
0 голосов
/ 27 сентября 2010

Попробуйте:

SELECT user_id,item_id,click_dt FROM
(
    SELECT MAX(click_dt) AS LastClick_dt,item_id FROM aTable
    GROUP BY item_id
) As LastClick
INNER JOIN aTable 
ON aTable.itemid = LastClick.item_id
AND aTable.click_dt = LastClick.LastClick_dt

В части после выбора будет последний щелчок для каждого item_id, а затем вы можете присоединить его к исходной таблице, чтобы получить соответствующий идентификатор пользователя.

...