У меня есть данные с GPS трекеров.Скажем, что-то вроде:
CREATE TABLE IF NOT EXISTS `tab_gps` (
`id` int(6) unsigned NOT NULL,
`speed` int(3) unsigned NOT NULL,
`time` time NOT NULL,
`tracker_name` varchar(200) NOT NULL,
PRIMARY KEY (`id`)
) DEFAULT CHARSET=utf8;
и некоторые примеры данных:
('1', '5', '07:00', 'car'),
('2', '10', '07:10', 'car'),
('3', '0', '07:20', 'bus'),
('4', '0', '07:30', 'car'),
('5', '0', '07:40', 'car'),
('6', '0', '07:50', 'car'),
('7', '20', '08:00', 'car'),
('8', '40', '08:10', 'bus'),
('9', '15', '08:15', 'car'),
('10', '0', '08:32', 'car'),
('11', '0', '08:40', 'car'),
('12', '0', '08:52', 'bus'),
('13', '12', '09:10', 'car'),
('14', '0', '09:25', 'car'),
('15', '0', '09:30', 'car'),
('16', '0', '09:35', 'car'),
('17', '10', '09:41', 'car'),
('18', '5', '09:46', 'car');
('19', '0', '09:50', 'car');
Вопрос в том, как найти время, когда конкретное имя_трекера начало свой маршрут
Итак, в моем примере алгоритм в моей голове:
- SELECT * FROM tab_gps ГДЕ tracker_name = 'car' тогда
- найти последнюю позицию со скоростью = 0(которые имеют следующие позиции> 0)
- , а следующая позиция - это ВРЕМЯ, которое я ищу
В моем примере это позиция время: 09:41 (id = 17)
Я пытаюсь использовать:
select max(time) from tab_gps where tracker_name='car' and speed <>0
Вот Скрипка для лучшего понимания: http://sqlfiddle.com/#!9/834371