Выбор максимальной даты в день для выбранного идентификатора - PullRequest
0 голосов
/ 22 октября 2018

В настоящее время у меня есть таблица, которая содержит данные, структурированные с несколькими записями в день для любого заданного идентификатора.

Мне нужно выбрать максимальную дату в день, чтобы не выбирать сотни записей.

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

 SELECT a.*
 FROM turtle_locations a
 INNER JOIN
    (SELECT turtle_id, MAX(date) AS maxdate
    FROM turtle_locations
    GROUP BY turtle_id) groupedtt 
 ON a.turtle_id = groupedtt.turtle_id 
 AND a.date = groupedtt.maxdate

Что мне нужно, если конкретная черепаха скажет 10 записейза один день, чтобы вернуть только самую последнюю запись за этот день.

Структура таблицы очень проста: turtle_id, date, latitude, longitude

Каждая черепаха имеет несколько записей со временем с несколькимизаписей в день.Например, посмотрите данные ниже для одной из черепах

https://pastebin.com/jpQB2VKW

Ответы [ 2 ]

0 голосов
/ 22 октября 2018
  • В вашем запросе дополнительного выбора ( Производная таблица ) вам также необходимо сгруппировать данные по дате, используя функцию Date().Это даст вам максимальное значение даты в день и идентификатор .

Попробуйте следующее:

 SELECT a.*
 FROM turtle_locations AS a
 INNER JOIN
    (SELECT turtle_id, 
            DATE(`date`) AS day_date, 
            MAX(`date`) AS maxdate
    FROM turtle_locations 
    GROUP BY turtle_id, day_date) AS groupedtt 
 ON a.turtle_id = groupedtt.turtle_id 
 AND a.`date` = groupedtt.maxdate 

DB Fiddle Demo

0 голосов
/ 22 октября 2018

http://sqlfiddle.com/#!9/861ab1/1

 SELECT a.*
 FROM turtle_locations a
 LEFT JOIN turtle_locations b
    ON a.turtle_id = b.turtle_id
    AND a.date < b.date
 WHERE b.turtle_id IS NULL
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...