Итак, я хочу сравнить новых пользователей с возвращающимися пользователями в таблице по месяцам. У меня есть таблица, которая содержит каждое действие с именем пользователя и отметкой даты.
Я могу легко вытащить пользователей, которые выполнили действие, например, в январе 2011 года. Чтобы увидеть, является ли каждый пользователь новым, мне нужно запустить его имя пользователя для всех предыдущих записей (до января 2011 года).
В своих вознях я придумал следующее:
SELECT ini.username,
MIN(ini.datetime) AS firstAction,
COUNT(ini.datetime) AS numMonth,
(SELECT COUNT(*)
FROM tableActions tot
WHERE tot.username = ini.username
AND tot.datetime < '201101%'
AND tot.datetime > '201001%') AS numTotal
FROM tableActions ini
WHERE DATETIME >= '201101%'
AND DATETIME < '201102%'
GROUP BY ini.username
ORDER BY firstAction
Это не ошибка, но и не заканчивается. Кажется, довольно интенсивно.