
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
17.02.2015, 18:30:19
|
|||
|---|---|---|---|
|
|||
Сравнение разницы времени с диапазоном |
|||
|
#18+
Здравствуйте. Попалась задачка и не пойму как ее решить. Есть таблица с сохранениями всех действий пользователей над квестами. idquest_iduser_idtimeaction111111111021111112103111134111421111111052111221116221111110722112211182311111109231122111 Есть ID квеста, ID пользователя, время(Unixtime) и какое действие было выполнено(1 - выполнен квест, 0 - начат). Нужно определить сколько пользователей выполнило каждый квест уложившись в заданный промежуток. Если у нас есть промежуток, например, от 1 до 5 минут, то нужно взять какую-то запись с action = 1(такая будет уникальная), для нее найти пару с таким же quest_id и user_id, но где action = 0(причем таких записей может быть несколько, нам нужно взять ту, где время минимальное), посмотреть попадает ли разница в значении полей time в заданный промежуток, а потом сгрупировать по quest_id и сделать count по полю user_id. В итоге для таблицы из примера должно получиться что-то типа: quest_idusers_count1123 Для первого квеста его выполнили в заданное время 1 человек, для второго 3. Натолкните на мысль как это все можно сделать через SQL запрос. Перебором в коде программы я это сделать могу, но тогда пропадает возможность задавать LIMIT и OFFSET при запросе, что не очень хорошо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
18.02.2015, 04:56:14
|
|||
|---|---|---|---|
|
|||
Сравнение разницы времени с диапазоном |
|||
|
#18+
mailler, для выбора "нужно взять ту, где время минимальное" начни читать отсюда , далее просто джойнишь исходную таблицу с найденными "минимальными" временами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
18.02.2015, 05:06:22
|
|||
|---|---|---|---|
|
|||
Сравнение разницы времени с диапазоном |
|||
|
#18+
mailler, а в твоем конкретном случае всё ещё проще: 0) в деривед-тэйбле ищешь минимумы времени в разрезе quest_id и user_id с фильтрацией по action = 0 1) джойнишь результат на исходную таблицу, отфильтрованную по условию action = 1 3) группируешь по квесту, считаешь кол-во ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=47&tablet=1&tid=1833559]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
17ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
25ms |
get tp. blocked users: |
1ms |
| others: | 233ms |
| total: | 312ms |

| 0 / 0 |
