powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / двойной запрос(новичек)
4 сообщений из 4, страница 1 из 1
двойной запрос(новичек)
    #39278251
bobom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго дня. Есть таблица на 400тыс. строк
id | uniq_id | type | time
1 | qweqwe| 1 | 1469128536
2 | asdasd | 1 | 1469128537
3 | qweqwe | 2 |1469128538
4 | zxczxc | 1 | 1469128539
5 | asdasd | 2 | 1469128540
...

Необходимо сделать выборку всех записей во временном интервале c id 1
SELECT * FROM table WHERE type = 1 AND time BETWEEN 1469128536 AND 1469128538

А после найти все записи с предыдущей выборки и получить поле time с id = 2,те например нам вернули уники qweqwe и asdasd. Далее выполняем поиск, но уже не учитывая временные рамки:
SELECT * FROM table WHERE type = 1 AND uniq_id LIKE 'qweqwe'; и тд

Необходимо получить разность поля time строк с одинаковыми uniq_id, где в одном случае id = 1, а во втором id = 2.

После суммировать все полученные разности и разделить на кол-во уникальных записей, которые участвовали в запросах. На данный момент я делаю это в 2 этапа через php и циклы, что само по себе сильно затратно и обрабатывается довольно долго. Подскажите, можно ли как-нибудь эту задачу решить в 1 запросе, как вариант через процедуру?

Иначе говоря надо вычислить среднее значение времени, как долго запись с id 1 становиться записью с id 2.
...
Рейтинг: 0 / 0
двойной запрос(новичек)
    #39278301
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
select avg(delta)
from (
 select uniq_id
  ,sum(case type when 2 then `time` when  1 then -`time` else null end) as delta
 from table t1 join (
  SELECT distinct uniq_id 
  FROM table 
  WHERE type = 1 AND time BETWEEN 1469128536 AND 1469128538
 ) t2 on t1.uniq_id=t2.uniq_id
 group by 1
) t3
...
Рейтинг: 0 / 0
двойной запрос(новичек)
    #39278405
bobom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо) Однако по времени выяснилось, что способ всего немного быстрее. Буду работать над оптимизацией таблицы
...
Рейтинг: 0 / 0
двойной запрос(новичек)
    #39278479
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bobom,

покажите explain запроса и show create table таблицы
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / двойной запрос(новичек)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]