|
|
|
Достать распределение
|
|||
|---|---|---|---|
|
#18+
Привет всем! Есть такая таблица im: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Таблица содержит сведения о посещении определенных пользователей определенных сайтов. Мне нужно получить распределение количества пользователей по частоте посещения за определеный промежуток времени: Код: sql 1. 2. 3. 4. 5. 6. Очень не хочется постоянно перебивать значения интервалось - т.е. хочется править их в одном месте и чтобы потом автоматически менялось в остальных(это если делать через PIVOT, например) написал вот такой запрос: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. Получаю табличку: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Как дальше из нее можно достать нужное распределение? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2014, 12:51:45 |
|
||
|
Достать распределение
|
|||
|---|---|---|---|
|
#18+
MySQL не поддерживает PIVOT. Посему только статическое формирование. Возможно, программно на основе таблицы интервалов и prepared statement. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2014, 17:34:57 |
|
||
|
Достать распределение
|
|||
|---|---|---|---|
|
#18+
Стас0н, Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2014, 17:35:27 |
|
||
|
Достать распределение
|
|||
|---|---|---|---|
|
#18+
AkinaПосему только статическое формирование. Возможно, программно на основе таблицы интервалов и prepared statement. а что, использовать field() или find_in_set() религия что ли запрещает??))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2014, 17:37:28 |
|
||
|
Достать распределение
|
|||
|---|---|---|---|
|
#18+
Lumix, то ли я неверно понимаю ТС, то ли ты. И почему-то мне кажется, что второе ближе к истине. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2014, 18:12:52 |
|
||
|
Достать распределение
|
|||
|---|---|---|---|
|
#18+
AkinaLumix, то ли я неверно понимаю ТС, то ли ты. И почему-то мне кажется, что второе ближе к истине. Подождем, как он отреагирует на мое решение. А там видно будет... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2014, 18:36:52 |
|
||
|
Достать распределение
|
|||
|---|---|---|---|
|
#18+
Виноват, что-то бездумно скопировал запрос, не посмотрев что в нем. Табличку Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Получаю запросом Код: sql 1. 2. 3. 4. 5. 6. 7. Lumix, ваше решение прогнал, но на самом деле не понял, что возвращает запрос: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. Вы бы не могли пояснить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2014, 19:02:21 |
|
||
|
Достать распределение
|
|||
|---|---|---|---|
|
#18+
Стас0н Lumix, ваше решение прогнал, но на самом деле не понял, что возвращает запрос: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. Вы бы не могли пояснить? могу, если покажете каким именно запросом прогоняли, потому что тут на сцене появился какой-то adnest))) я вообще не пойму что это такое... вроде по условиям задачи у вас всего два поля: site_id, visitor_id я же дал решение исходной задачи, не решение на тупик, в который вы зашли ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2014, 19:28:21 |
|
||
|
Достать распределение
|
|||
|---|---|---|---|
|
#18+
Виноват, просто чтобы не слишком морочить голову в описании топика писал site_id (на самом деле adnest_id). Табличка gj вашему запросу выглядит вот так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2014, 19:40:34 |
|
||
|
Достать распределение
|
|||
|---|---|---|---|
|
#18+
Судя по всему этот запрос попросту считает общее кол-во заходов пользователей на сайт.. значение последнего столбца r вообще непонятно, если честно. Мне же нужно сделать следующее: найти распределение количества пользователей по частоте для каждого сайта. Частоту хотел взять интервалами, которые хотел бы хранить во временной таблице, которую формирую так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Дальше, если пользователь 133 раза заходил на сайт, за определенный промежуток времени, то в графе 101-200 будет +1 от этого пользователя. Мне кажется, проще работать не с первоначальной таблицей, а с той, которую получил: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Здесь уже содержаться данные для каждого пользователя по количеству заходов на сайт за определенный промежуток времени ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2014, 20:06:17 |
|
||
|
Достать распределение
|
|||
|---|---|---|---|
|
#18+
Стас0нЗдесь уже содержаться данные для каждого пользователя по количеству заходов на сайт за определенный промежуток времения один не вижу тут (и в предыдущих примерах ТС) даже намёка на "определенный промежуток времени"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2014, 20:25:57 |
|
||
|
Достать распределение
|
|||
|---|---|---|---|
|
#18+
Стас0нВиноват, просто чтобы не слишком морочить голову в описании топика писал site_id (на самом деле adnest_id). Табличка gj вашему запросу выглядит вот так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. ой, ну конечно я забыл двойную группировку, ведь вам ещё и сайты надо группировать в итоге будет вот так Код: sql 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2014, 20:29:23 |
|
||
|
Достать распределение
|
|||
|---|---|---|---|
|
#18+
tanglirСтас0нЗдесь уже содержаться данные для каждого пользователя по количеству заходов на сайт за определенный промежуток времения один не вижу тут (и в предыдущих примерах ТС) даже намёка на "определенный промежуток времени"? ТС все правильно сделал - он выкинул из примеров время, чтобы мы могли сосредоточится на объяснении ему ключевой сложности, где у него затык, а всякие фильтры по датам и пр. он всегда может докрутить опосля, после того как усвоит как же работают сводники ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2014, 20:31:14 |
|
||
|
Достать распределение
|
|||
|---|---|---|---|
|
#18+
Lumix, а, всё, понял, ему надо распределение по частоте, а мне почему-то показалось, что по времени... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2014, 20:32:23 |
|
||
|
Достать распределение
|
|||
|---|---|---|---|
|
#18+
Именно! Все условия на время я уже выполнил, получилась табличка: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Вот теперь нужно с ней работать. Как раз таки и не допираю как распределение по частоте выбрать. Lumix, а зачем Вы общее число заходов пользователя делите на 10 и целую часть снизу берете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2014, 20:35:46 |
|
||
|
Достать распределение
|
|||
|---|---|---|---|
|
#18+
Lumix, вот таблица от вашего запроса: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Они теперь, на сколько я понимаю, не информативна, но пусть будет для истории Все-таки, хотелось бы понять как можно решить мою задачу с распределением и при это выводить результат не столбцами как обычно, а в строку: Код: sql 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2014, 20:51:55 |
|
||
|
Достать распределение
|
|||
|---|---|---|---|
|
#18+
Стас0нLumix, а зачем Вы общее число заходов пользователя делите на 10 и целую часть снизу берете? А разве на результате выдачи вот этого запроса это не очевидно зачем?? или вы его пока по базе не прогоняли?.... Код: sql 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2014, 20:53:23 |
|
||
|
Достать распределение
|
|||
|---|---|---|---|
|
#18+
Стас0нLumix, вот таблица от вашего запроса: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Они теперь, на сколько я понимаю, не информативна, но пусть будет для истории Все-таки, хотелось бы понять как можно решить мою задачу с распределением и при это выводить результат не столбцами как обычно, а в строку: Код: sql 1. 2. 3. 4. 5. 6. Объясните мне пожалуйста как вы посчитали число 967 и что такое 1-10? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2014, 20:55:23 |
|
||
|
Достать распределение
|
|||
|---|---|---|---|
|
#18+
Стас0нLumix, вот таблица от вашего запроса: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Они теперь, на сколько я понимаю, не информативна, но пусть будет для истории [/src] Эта таблица показывает, что за указанный период времени на сайт №8 54 тыс. пользователей зашли от 1 до 10 раз, 632 пользователя зашли от 11 до 20 раз, 246 пользователей зашли от 21 до 30 раз и всего 40 пользователей зашли более 40 раз ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2014, 20:58:00 |
|
||
|
Достать распределение
|
|||
|---|---|---|---|
|
#18+
А, только сейчас дошло, что это завуалированные интервалы с шагом 10) На базе запускал. Результат выше. приведу на всякий пожарный еще раз: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Спасибо, что помогли с этим разобраться. Понять бы еще как можно результат в строчку вытянуть. LumixСтас0нLumix, вот таблица от вашего запроса: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Они теперь, на сколько я понимаю, не информативна, но пусть будет для истории Все-таки, хотелось бы понять как можно решить мою задачу с распределением и при это выводить результат не столбцами как обычно, а в строку: Код: sql 1. 2. 3. 4. 5. 6. Объясните мне пожалуйста как вы посчитали число 967 и что такое 1-10? 967 и 576 - взял с потолка, просто чтобы показать структуру, которую хочется видеть. 1-10 - это интервалы. Хотелось бы иметь не набор интервалов с шагом 10, а, например, брать из таблицы: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2014, 21:10:52 |
|
||
|
Достать распределение
|
|||
|---|---|---|---|
|
#18+
Стас0н967 и 576 - взял с потолка, просто чтобы показать структуру, которую хочется видеть. 1-10 - это интервалы. Хотелось бы иметь не набор интервалов с шагом 10, а, например, брать из таблицы: Это нечестно!!! в ссср в пионерском лагере была такая злая шутка: - угадай загадку - давай - сидит два воробья, к ним прилетел ещё один, сколько воробьев стало? - трое! - не правильно, один! - WTF?!!((( - так двое потом улетели!! Там, где я ожидал принятие успешного решения задачи, я получил от вас чудовищную демотивацию в виде новой задачи! тем самым у меня возникло опасение, что если я и эту задачу решу, то там вместо принятия успешного решения задачи будет ещё одна новая задача или ещё какие-то новые условия, то есть вы демотивировали меня по той же самой схеме, которая изложена в сказке о рыбка и рыбке, поэтому пусть вам дальше помогает кто-нибудь другой, тут на форуме много специалистов. А я пойду залечивать свою душевную рану!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2014, 21:30:44 |
|
||
|
Достать распределение
|
|||
|---|---|---|---|
|
#18+
Стас0н, приведите пример исходных данных -- 5-10-15 строчек и конкретный ожидаемый результат из ЕТИХ конкретных исходных данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2014, 23:02:14 |
|
||
|
Достать распределение
|
|||
|---|---|---|---|
|
#18+
Вот пример исходных данных: Таблица с записями о том какой пользователь зашел на сайт: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Отдельно есть таблица, связывающая заход пользователя и время. Из этих данных хотелось бы получить распределения количества пользователей по частоте на каждом сайте за, например, неделю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2014, 00:39:42 |
|
||
|
Достать распределение
|
|||
|---|---|---|---|
|
#18+
Мне кажется, первый шаг я сделал - написал запрос, который формирует таблицу с сайтом, айдишником пользователя и посещаемостью им этого сайта за определенный промежуток времени. Выглядит таблица так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Что-то мне подсказывает, что с такой таблице проще работать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2014, 00:41:38 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38746718&tid=1834213]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
75ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
71ms |
get tp. blocked users: |
2ms |
| others: | 220ms |
| total: | 408ms |

| 0 / 0 |
