получить два значения в запросе выбора на основе различных условий и вычесть их [дубликаты]

0

У меня есть таблица, которая выглядит так. Один и тот же id1 может иметь более одной строки с разными значениями действия. Однако может быть одно "открытое" и одно "объединенное" значение для одного id1 (не все id1 будут иметь строку с "объединенным" значением, но каждый идентификатор гарантированно имеет "открытое" значение)

id_1    id2 id3     action      time                ext_id    
8131201 2   345886  opened      2012-01-19 00:24:55 5099318b1b66c0d7b200000c
8510820 2   345886  merge       2012-01-26 09:20:17 5099318b1b66c0d7b200000d

Для тех id1, которые имеют "объединенное" значение, я хочу получить разницу во времени между тем, когда он был открыт, и когда он был объединен в один запрос. Как это возможно?

Теги:

1 ответ

1
Лучший ответ

Вы можете сделать это с помощью самостоятельного присоединения:

SELECT t.id_1, TIMEDIFF(t.time, t2.time) AS time_difference
FROM t
INNER JOIN t t2 ON t.id_1 = t2.id_1
WHERE t.action = 'opened'
AND t2.action = 'merge

Поэтому в основном присоедините таблицу к себе на id 1, где первая запись открывается, а вторая - слияние. Затем найдите разницу во времени из каждой копии таблицы, используя TIMEDIFF.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню