|
|
|
Подсчет записей подряд.
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Хочу подсчитать, сколько дней подряд заходит пользователь. Есть таблица, в которой каждый визит пишется в формате DATETIME, за день визитов может быть сколько угодно. Возможно ли такое сделать средствами SQL? Например, если визиты 2016-05-05 18:21:00 2016-05-05 18:21:00 2016-05-04 18:21:00 2016-05-03 18:21:00 2016-05-03 18:21:00 2016-05-01 18:21:00 то результат запроса будет 3, т.к. пользователь только 3 дня подряд зашел, 2 мая он не заходил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2016, 18:22 |
|
||
|
Подсчет записей подряд.
|
|||
|---|---|---|---|
|
#18+
MovieClip, Можно, вот типа так - в лоб Код: sql 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2016, 00:54 |
|
||
|
Подсчет записей подряд.
|
|||
|---|---|---|---|
|
#18+
MovieClip, структуру таблицы подробнее опиши. какие ещё поля в ней есть, кроме поля с дата-временем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2016, 04:53 |
|
||
|
Подсчет записей подряд.
|
|||
|---|---|---|---|
|
#18+
MovieClip, опять же, непонятно - если пользователь вначале три дня подряд заходил, после пару дней пропустил, опять три дня заходил, день пропустил, а затем заходил подряд 5 дней. То какой результат должен быть в итоге? три строки - 3, 3 и 5 (все сплошные интервалы захождения, не короче заданного числа дней)? или только одна строка - 5 (максимальный сплошной интервал вхождений пользователя) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2016, 05:08 |
|
||
|
Подсчет записей подряд.
|
|||
|---|---|---|---|
|
#18+
Добрый Э - Эх, а может быть и 11 - общее количество дней в периодах "сплошных заходов" :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2016, 09:00 |
|
||
|
Подсчет записей подряд.
|
|||
|---|---|---|---|
|
#18+
Добрый Э - Эх, последний результат, т.е. кол-во заходов подряд на текущий день, включая его. Не захоидл вчера - результат 1, т.к. только сегодня заходил, заходил только вчера и сегодня - результат два, то есть результаты после разрыва не нужны. Надеюсь, понятно сказал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2016, 21:18 |
|
||
|
Подсчет записей подряд.
|
|||
|---|---|---|---|
|
#18+
select count(*) from ( select date(`dt`) as d_ from `dates`, (select @a:="2016-05-05") `now` -- стартовая дата group by d_ having if(@a = d_, @a := @a - interval 1 day, NULL) is not null order by d desc ) subq; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2016, 22:24 |
|
||
|
Подсчет записей подряд.
|
|||
|---|---|---|---|
|
#18+
Пардон, поторопился Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2016, 22:28 |
|
||
|
Подсчет записей подряд.
|
|||
|---|---|---|---|
|
#18+
MovieClip, наверное, как-то так... За синтаксисом в хелп лезть лениво, преобразование datetime в date взял от ms sql. Таблица CALENDAR неожиданно содержит... все дни от царя Гороха до ближайшего оборзимого будущего, даже возможно с нагрузкой до производственного календаря... Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.05.2016, 14:24 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=39231122&tid=1831823]: |
0ms |
get settings: |
5ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
161ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
30ms |
get tp. blocked users: |
1ms |
| others: | 237ms |
| total: | 457ms |

| 0 / 0 |
