Хорошо, допустим, ваша таблица называется visits
, и вас интересует номер недели n
.Вы хотите знать, для каждой номера недели w >= n
, какие пользователи появляются в каждую одну такую неделю w
.
Так сколько таких недель существует??
select count(*)
from visits
where week >= n;
А сколько таких недель посещал каждый пользователь?
select user, count(user)
from visit
group by user
where week >= n;
Предположим, у вас есть недели 1, 3, 4, 5, 6, 7, 9, 10,и 13, и вас интересует 5-я неделя. Итак, первый запрос, приведенный выше, дает вам 6, потому что есть 6 недель интереса: 5, 6, 7, 9, 10 и 13. Второй запрос даст вам, для каждогоПользователь, сколько из этих недель они посетили. Теперь вы хотите узнать, сколько из этих пользователей насчитывает 6.
Я думаю, что это работает:
select user, count(user)
from visit
group by user
having count(user) = (
select count(*)
from visits
where week >= n)
where week >= n;
но я не знаюУ меня нет доступа к MySQL прямо сейчас.Если это не сработает, то, возможно, подход имеет смысл и направит вас в правильном направлении.РЕДАКТИРОВАТЬ: я смогу проверить завтра.