Я уже в течение нескольких часов безрезультатно, вытаскивая волосы.Mysql вычитание значений с использованием строки, выбранной из минимальной метки времени, группировка по идентификатору
Edit: Im желая, чтобы вычислить разницу между overall_exp колонки, используя одни и те же данные 1 день назад вычислить наибольший «выигрыш» для каждого пользователя
В настоящее время я взять строку, а затем выберите ряд от 1 день назад на основе временной метки первых строк затем вычесть overall_exp столбец из 2-х строк и порядка по этому результату в то время как группировка по user_id
SQL Скрипки: http://sqlfiddle.com/#!2/501c8
Вот что я в настоящее время, однако логика совершенно неверна, поэтому im pulling 0 results
SELECT rsn, ts.timestamp, @original_ts := SUBDATE(ts.timestamp, INTERVAL 1 DAY), ts.overall_exp, ts.overall_exp - previous.overall_exp AS gained_exp
FROM tracker AS ts
INNER JOIN (
SELECT user_id, MIN(TIMESTAMP) , overall_exp
FROM tracker
WHERE TIMESTAMP >= @original_ts
GROUP BY user_id
) previous
ON ts.user_id = previous.user_id
JOIN users
ON ts.user_id = users.id
GROUP BY ts.user_id
ORDER BY gained_exp DESC
Все образцы данных в SQLFiddle для одного дня (11 мая 2013 г.), поэтому независимо от того, какой запрос вы выполняете против него, вы никогда не получите строку за день до отметки времени данной строки. Кроме того, это далеко не ясно, что ** вы пытаетесь достичь - ваш существующий вопрос описывает только то, как ** вы пытаетесь его достичь. –
Обновлено OP и SQLFiddle – Wader
Спасибо, это яснее, но все еще немного неясно - вам нужна одна строка на пользователя в день, и если да, какая временная метка с одного дня вы хотите сравнить с какой меткой времени с предыдущего дня? В качестве альтернативы, вы хотите, чтобы одна строка в вашем результирующем наборе для каждой строки в «трекере», сравнивая дату и время в каждой строке с самой ранней датой и временем в предыдущие 24 часа (что, по-видимому, является логикой положенного запроса) ? Или что-то другое? –