I am trying to find a way to get the last row of every order for which the last status is Placed on Mysql.
The data looks like this:
| orderid | clientid | timestamps | order_status |
|---|---|---|---|
| 1234 | 885 | 2022-01-01 08:00:00 | Placed |
| 1234 | 885 | 2022-01-01 09:00:00 | Placed |
| 1234 | 885 | 2022-01-01 12:00:00 | Processed |
| 1235 | 885 | 2022-01-02 09:00:00 | Processed |
| 1235 | 885 | 2022-01-01 14:00:00 | Placed |
| 1236 | 886 | 2022-01-02 08:00:00 | Placed |
| 1236 | 886 | 2022-01-02 08:00:00 | Processed |
and here is my query:
SELECT *
FROM orders
WHERE timestamps = (SELECT MAX(timestamps
FROM orders
GROUP BY orderid) and order_status = 'Placed'
But since for a same timestamp it could be both placed and processed like the order id 1236 I want to exclude this row completly since I only want the one that are just placed not processed. I tried to add row numbers but it didn't really helped me. Anyone has an idea or a hint on how to solve that? Thanks in advance !