Как показать каждое максимальное значение в MySQL? - PullRequest
1 голос
/ 17 мая 2011

У меня есть несколько значений с разными временными метками, например:

10   01:01:00
20   01:35:00
30   02:10:00
05   02:45:00
12   03:05:00
21   03:30:00
10   04:06:00
40   05:15:00

У меня нет столбца, по которому я могу сгруппировать и найти макс. Я хочу получить записи с максимальными значениями, такими как 30,21 и 40. Данные всегда находятся в этом формате, например, увеличение значения и затем снова начинается с нуля. Какой запрос поможет мне найти эти записи?


Чтобы уточнить, он отсортирован по отметке времени, и я хочу получить отметки времени для локальных максимумов, строк, в которых следующая строка имеет меньшее значение:

value    tmstmp
-----   --------
 10     01:01:00
 20     01:35:00
 30     02:10:00  <-- this one since next value is 5 (< 30).

 05     02:45:00
 12     03:05:00
 21     03:30:00  <-- this one since next value is 10 (< 21).

 10     04:06:00
 40     05:15:00  <-- this one since next value is 40 (< infinity).

Ответы [ 2 ]

0 голосов
/ 20 февраля 2015

Этот ответ может быть немного запоздалым, однако я думаю, что нашел решение

SELECT * FROM temp t1 WHERE value > 
  IFNULL(
    (SELECT value FROM temp t2
    WHERE t2.tmstmp > t1.tmstmp ORDER BY t2.tmstmp ASC limit 1),
   -1
  ) 
ORDER BY tmstmp ASC

Чтобы уточнить: я нахожу значения, где значение больше, чем следующее значение в строке.Чтобы также получить окончательное значение, я добавил IFNULL вокруг подзапроса, чтобы убедиться, что подзапрос вернет -1

Единственная проблема, которую я вижу, это когда время переходит на следующий день, поэтому я надеюсь,к ней можно добавить дату.

Надеюсь, это все равно поможет другим

0 голосов
/ 17 мая 2011

Почему-то ваш вопрос мне не понятен.Предположим, что имя первого столбца - «значение», а имя второго столбца - «отметка времени».

Выберите Макс. (Значение) из группы по отметке времени.

...