|
Помогите пожалуйста составить правильный запрос
|
|||
---|---|---|---|
#18+
Есть таблица вида: Код: sql 1. 2. 3. 4.
из которой нужно максимально ресурсоэффективно создать сводную таблицу с уникальными значениями по полю click_id таким образом, чтобы в value_id попало значение, из строки с самым большим id, относящимся к данному click_id при этом только из допустимых значений name_id Например, допустимыми значениями для name_id возьмём 1 и 2: Исходная таблица id click_id value_id name_id1 1 2 12 2 3 13 1 4 14 3 5 25 3 7 36 4 8 27 5 9 38 2 6 19 6 7 3 Конечная таблица: id click_id value_id name_id3 1 4 14 3 5 26 4 8 28 2 6 1 Подскажите плиз гуманитарию :) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2018, 20:14 |
|
Помогите пожалуйста составить правильный запрос
|
|||
---|---|---|---|
#18+
А гуманитарий знает точную версию MySQL-сервера? потому как для версии 5+ и для версии 8+ решения будут ну очень различаться. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2018, 21:05 |
|
Помогите пожалуйста составить правильный запрос
|
|||
---|---|---|---|
#18+
Кстати. А ежели один и тот же click_id есть и у юзера 1, и у юзера 2 (в примере таких данных нет, но вряд ли они запрещены на уровне структуры таблицы), то на выходе будет одна запись (для того юзера, у кого id больше) или две (по записи для каждого юзера)? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2018, 21:07 |
|
Помогите пожалуйста составить правильный запрос
|
|||
---|---|---|---|
#18+
click_id подразумевает уникального пользователя за 24 часа. А при повтоных заходах мы получаем дополнительные строки с этим пользователем (с тем же кликайди), но видим разные варианты страницы, т.е. value_id. Некоторые страницы не являются транзитными, что как раз и описывает область допустимых значений в name_id. Т.е. задача как раз в том, чтобы взять данные из его последнего посещения. SQL версии 5.7.23-24 - Percona Server ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2018, 23:18 |
|
Помогите пожалуйста составить правильный запрос
|
|||
---|---|---|---|
#18+
seometisSQL версии 5.7.23-24Тогда только подзапросом или на переменных. См. FAQ: Нумерация строк и другие вопросы про использование переменных и FAQ: Выборка первой/последней записи в группах . ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2018, 07:42 |
|
Помогите пожалуйста составить правильный запрос
|
|||
---|---|---|---|
#18+
AkinaseometisSQL версии 5.7.23-24Тогда только подзапросом или на переменных. А как на 8ке это можно сделать более эффективно? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2018, 10:46 |
|
Помогите пожалуйста составить правильный запрос
|
|||
---|---|---|---|
#18+
В восьмёрке есть оконные функции. Так что просто FIRST_VALUE(PARTITION BY click_id ORDER BY id DESC) . ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2018, 11:41 |
|
Помогите пожалуйста составить правильный запрос
|
|||
---|---|---|---|
#18+
AkinaВ восьмёрке есть оконные функции. Так что просто FIRST_VALUE(PARTITION BY click_id ORDER BY id DESC) . Ух ты! Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2018, 11:54 |
|
Помогите пожалуйста составить правильный запрос
|
|||
---|---|---|---|
#18+
seometisнужно максимально ресурсоэффективно создать сводную таблицу Максимально ресурсноэффективно - это практическая задачи, или самоцель? Попробуйте обычным способом нарисовать запрос с подзапросом и посмотрите результат. Вполне возможно, вас это устроит. Следующий инсерт способен нивелировать все потуги по оптимизации селекта. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2018, 11:59 |
|
|
start [/forum/topic.php?fid=47&fpage=42&tid=1829400]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
44ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 149ms |
0 / 0 |