[英]Mysql - Group By start and end times within 30 minutes
我正在嘗試從我們的計時應用程序中總結員工的休假時間,並且如果開始時間和結束時間相同或在30分鍾內,則需要合並記錄。
這是我的數據:
First_Name Start_Date End_Date
EmployeeA 2015-07-23 08:00:00 2015-07-23 16:30:00
EmployeeB 2015-07-23 12:00:00 2015-07-23 08:00:00
EmployeeC 2015-08-20 08:00:00 2015-08-20 10:15:00
EmployeeC 2015-08-20 10:15:00 2015-08-20 12:00:00
EmployeeC 2015-08-20 12:30:00 2015-08-20 16:30:00
EmployeeD 2015-08-22 08:00:00 2015-08-22 10:15:00
EmployeeD 2015-08-22 16:00:00 2015-08-22 16:30:00
在上面的示例中,我希望我的輸出看起來像是:
First_Name Start_Date End_Date
EmployeeA 2015-07-23 08:00:00 2015-07-23 16:30:00
EmployeeB 2015-07-23 12:00:00 2015-07-23 08:00:00
EmployeeC 2015-08-20 08:00:00 2015-08-20 16:30:00
EmployeeD 2015-08-22 08:00:00 2015-08-22 09:00:00
EmployeeD 2015-08-22 16:00:00 2015-08-22 16:30:00
基本上,任何結束時間在30分鍾以內或等於同一員工的另一條記錄的開始時間的記錄都應分組。
到目前為止,我是一個分組依據,如果在24小時內沒有時間,則合並記錄,但是這將合並我的EmployeeD示例中的記錄,這不是我的意圖。
select a.first_name, start_date, max(end_date)
from timeoff
group by unix_timestamp(start_date) DIV 17200, first_name
我認為我需要按功能分組使用開始時間和結束時間,但是在確定如何使用時需要幫助。
謝謝你的協助。
抱歉,但這不是按指令分組的目的。 我建議您在與mysql一起使用的任何語言上執行此操作。
如果必須在mysql上執行此操作,那么想到的解決方案將需要進行一些更改:
shift_id
分組,我們將其shift_id
。 shift_id
設置為與上一個迭代或新的自動生成的相同。 這樣做比簡單地在應用程序代碼中查找需要更多的工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.