我正在做一个个人项目,我被困在清理特定数据集的阶段。数据集由访问不同停车站点(具有唯一AgentID)的代理(具有唯一ParkingID)的记录组成。他正在使用一个应用程序在数据库中输入他的记录。当代理进入停车场时,他按下登录按钮,离开时在应用程序中按注销(代理可以多次按该按钮,因此有可能重复登录和注销记录)。当他/她访问一个停车场时,他/她可以在那个地方遇到某些人时拿出一些罚单,从而在应用程序中标记Tickets Finished。问题是进入数据库的数据只被排序到分钟阶段。因此,具有相同时间的记录可以在数据库中以不同的方式出现。下面显示了这样一个虚拟数据集。

我想把它分类,第一个结束的事件应该出现在顶部,然后结束的事件应该出现在末尾。我想要的输出如下所示。

我不知道如何在MySQL中解决这个问题,如果你们中的任何人能帮助我解决这个问题,那么这将对你们非常有帮助。
发布于 2021-11-29 07:17:34
按CASE WHEN进行排序以打破领带。
SELECT *
FROM parking_agent_logs
ORDER BY `Date`, `Time`, ParkingID, AgentID
, CASE Event_Type
WHEN 'Log In' THEN 1
WHEN 'Ticket Finished' THEN 2
WHEN 'Log Out' THEN 3
ELSE 9
ENDdb<>fiddle https://dbfiddle.uk/?rdbms=mariadb_10.6&fiddle=bcecba2709efb4bd80357c7219c1254b的测试
https://stackoverflow.com/questions/70150721
复制相似问题