|
|
|
Сравнение разницы времени с диапазоном
|
|||
|---|---|---|---|
|
#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 при запросе, что не очень хорошо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2015, 18:30:19 |
|
||
|
Сравнение разницы времени с диапазоном
|
|||
|---|---|---|---|
|
#18+
mailler, для выбора "нужно взять ту, где время минимальное" начни читать отсюда , далее просто джойнишь исходную таблицу с найденными "минимальными" временами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2015, 04:56:14 |
|
||
|
Сравнение разницы времени с диапазоном
|
|||
|---|---|---|---|
|
#18+
mailler, а в твоем конкретном случае всё ещё проще: 0) в деривед-тэйбле ищешь минимумы времени в разрезе quest_id и user_id с фильтрацией по action = 0 1) джойнишь результат на исходную таблицу, отфильтрованную по условию action = 1 3) группируешь по квесту, считаешь кол-во ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2015, 05:06:22 |
|
||
|
|

start [/forum/topic.php?desktop=1&fid=47&tid=1833559]: |
0ms |
get settings: |
6ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
117ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
20ms |
get tp. blocked users: |
1ms |
| others: | 192ms |
| total: | 360ms |

| 0 / 0 |
