Разница дней смены времени mysql

Я могу найти первый и последний выход с минимальным и максимальным значением в тот же день, но при разнице выходных дней никаких изменений

Таблица Атт

  id     tgl                  
| 111 | 2019-02-24 07:30:00  |
| 111 | 2019-02-24 16:31:00  |
| 222 | 2019-02-24 17:59:00  |
| 222 | 2019-02-25 07:31:00  |
| 333 | 2019-02-24 07:30:00  |
| 333 | 2019-02-24 18:00:00  |

мой запрос

select id, min(date(tgl)) as date_in, max(date(tgl)) as date_out, 
        min(time(tgl)) as jam_in, max(time(tgl)) as jam_out 
from Att 
group by date(tgl),id

результат моего запроса

  id     tgl_in       tgl_out     jam_in    jam_out 
| 111 | 2019-02-24 | 07:30:00 | 2019-02-24 | 16:31:00 |
| 222 | 2019-02-24 | 17:59:00 | 2019-02-24 | 17:59:00 |
| 222 | 2019-02-25 | 07:31:00 | 2019-02-25 | 07:31:00 |
| 333 | 2019-02-24 | 07:30:00 | 2019-02-24 | 18:00:00 | 

Желаемый результат

 id     tgl_in       tgl_out    jam_in    jam_out 
| 111| 2019-02-24 | 2019-02-24 |07:30:00 | 16:31:00 | 
| 222| 2019-02-24 | 2019-02-25 |17:59:00 | 07:31:00 | 
| 333| 2019-02-24 | 2019-02-24 |07:30:00 | 18:00:00 |

Я меняю свой запрос на группу по идентификатору

select id, min(date(tgl)) as date_in, max(date(tgl)) as date_out, min(time(tgl)) as jam_in, max(time(tgl)) as jam_out from Att group by id

но результат time jam_in и jam_out id 222 неверен

id  date_in     date_out    jam_in      jam_out
111 2019-02-24  2019-02-24  07:30:00    16:31:00
222 2019-02-24  2019-02-25  07:31:00    17:59:00
333 2019-02-24  2019-02-24  07:30:00    18:00:00

Изменить group by date(tgl),id на group by id

RiggsFolly 24.02.2019 13:59

@RiggsFolly Нет. Это не так.

Strawberry 24.02.2019 14:48

Спасибо @Strawberry, это затронуто, но только на 2 свидания, а если больше 2 свиданий?

ikur 24.02.2019 15:23

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

Strawberry 24.02.2019 15:24
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
4
232
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Эм,

DROP TABLE IF EXISTS my_table;

CREATE TABLE my_table
(id INT NOT NULL
,tgl DATETIME
,PRIMARY KEY(id,tgl)
);

INSERT INTO my_table VALUES
(111,'2019-02-24 07:30:00'),
(111,'2019-02-24 16:31:00'),
(222,'2019-02-24 17:59:00'),
(222,'2019-02-25 07:31:00'),
(333,'2019-02-24 07:30:00'),
(333,'2019-02-24 18:00:00');

SELECT id, MIN(tgl) x, MAX(tgl) y FROM my_table GROUP BY id;
+-----+---------------------+---------------------+
| id  | x                   | y                   |
+-----+---------------------+---------------------+
| 111 | 2019-02-24 07:30:00 | 2019-02-24 16:31:00 |
| 222 | 2019-02-24 17:59:00 | 2019-02-25 07:31:00 |
| 333 | 2019-02-24 07:30:00 | 2019-02-24 18:00:00 |
+-----+---------------------+---------------------+

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

Другие вопросы по теме