У меня есть таблица с именем LoginTable
с двумя столбцами: id
как VarChar и login_date
в качестве даты. Вот небольшой пример:SQL - подсчет повторных записей по дате
+-------+------------+
| id | login_date |
+-------+------------+
| user1 | 2014-10-15 |
| user1 | 2014-10-15 |
| user2 | 2014-10-15 |
| user3 | 2014-10-15 |
| user1 | 2014-10-16 |
| user3 | 2014-10-16 |
| user4 | 2014-10-16 |
| user2 | 2014-10-17 |
| user4 | 2014-10-17 |
+-------+------------+
Я хотел бы написать запрос SQL, который показывает, на каждый день, сколько пользователей вошли в систему на следующий день. Например, 15 октября имеет 3 уникальных входа - из них 3, только 16 пользователей вошли в систему 16 октября. Вывод должен быть таким:
+------------+--------------+
| Date | NextDayLogin |
+------------+--------------+
| 2014-10-15 | 2 |
| 2014-10-16 | 1 |
| 2014-10-17 | 0 |
+------------+--------------+
Моя лучшая попытка (теоретически) был такой:
SELECT
DISTINCT(id),
DATE(login_date) as 'Dates'
FROM LoginTable t1
INNER JOIN (
SELECT
DISTINCT(id) as id2,
DATE(login_date) as 'DatesNew'
FROM LoginTable
WHERE 'DatesNew' = DATE(t1.login_date) + INTERVAL '1' DAY
) t2
ON DATE(t1.login_date) = t2.DatesNew
AND t1.id = t2.id2
Однако я получаю сообщение об ошибке: Unknown column t1.log_date in where clause
.
Как это можно достичь? Я использую MySQL, если это имеет значение.
согласно объяснению, результат для '2014-10-16' должен быть' 1'? –
vkp - правильно, спасибо, что указали это. Я внедрил выход. – BogdanC