2016-08-30 4 views
0

Я пытаюсь вернуть max human_hits отдельных доменов, но ударил стену. В заявлении я отбрасываю отдельные домены с помощью human_hits, но он просто захватывает первый, так что это не максимум.Использование MAX в инструкции JOIN

Я попытался добавить MAX в инструкцию и поэкспериментировать, но только удалось повесить базу данных.

Вот что я до сих пор ...

SELECT q.* FROM ( 
    SELECT ah.datestamp, ad.domain, ah.human_hits 
    FROM `a_hits_hourly` ah 
    INNER JOIN a_saved_domains ad ON ah.domain_id = ad.domain_id 
    WHERE ah.datestamp > 2016070000 AND ah.human_hits > 0 
) q 
GROUP BY q.domain 

Может кто-нибудь помочь?

Благодаря

Стив

+0

Что такое 'human_visits'? Должно быть, это 'human_hits'? – Barmar

+0

Я не могу понять, что вы пытаетесь сделать. Не могли бы вы добавить некоторые примеры данных и желаемый результат? – Barmar

ответ

1

Что об этом?

SELECT ad.domain, MAX(ah.human_hits) 
    FROM `a_hits_hourly` ah 
    INNER JOIN a_saved_domains ad 
    ON ah.domain_id = ad.domain_id 
    WHERE ah.datestamp > 2016070000 AND ah.human_hits > 0 
    GROUP BY ad.domain 

Это вы должны получить максимальную human_hits для каждого domain. Или, может быть, я не уверен, чего ты хочешь.

+0

Спасибо Мэтту! Кажется, я снова переусердствовал :) – SteveF

+0

Если бы у меня был никель на каждый раз, когда я это делал :) Рад, что я мог бы помочь. –

0

В случае, если вам нужно знать другие значения, как datestamp, которые соответствуют записям вашего интереса, вы можете использовать запрос следующим образом:

SELECT domain, datestamp, human_hits 
FROM ( 
    SELECT  ah.datestamp, 
       ah.human_hits, 
       @rn := if (ad.domain = @domain, @rn + 1, 1) rn, 
       @domain := ad.domain domain 
    FROM  a_hits_hourly ah 
    INNER JOIN a_saved_domains ad ON ah.domain_id = ad.domain_id 
    WHERE  ah.datestamp > 2016070000 
    ORDER BY ad.domain, 
       ah.human_hits DESC 
) q 
WHERE rn = 1 

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

Смежные вопросы