#mysql
Вопрос:
У меня есть таблица mysql, в которой у меня есть данные, основанные на действии, я хочу, чтобы строки в соответствии с contact_id следовали за максимальным временем выполнения определенного действия.
У меня есть вариант использования и условие if, но я получаю 2 дополнительные строки и где данные отсутствуют, что очевидно, потому что для действия нет дополнительного столбца (created_at), но все равно я хочу получить комбинированный результат на основе contact_id.
MariaDB [rajesh_db]> select contact_id,action , created_at from activity order by contact_id,action;
------------ -------- ------------
| contact_id | action | created_at |
------------ -------- ------------
| 2713294 | 1 | 1712590363 |
| 2713294 | 1 | 1812590363 |
| 2713294 | 2 | 1612590363 |
| 2713294 | 2 | 1818590363 |
| 2713294 | 2 | 1818590863 |
| 2713295 | 1 | 1612590363 |
| 2713295 | 1 | 1712990363 |
| 2713295 | 2 | 1812890363 |
| 2713295 | 2 | 1832890363 |
------------ -------- ------------
Мне нужен результат
| contact_id | action | max(created_at) as click |max(created_at) as open |
------------ -------- -------------------------- ------------------------
| 2713294 | 1 | 1812590363 | 1818590863
| 2713295 | 2 | 1712990363 | 1832890363
Что я сделал до сих пор
SELECT contact_id, action, CASE WHEN action = 1 THEN MAX(created_at) END AS `click`, CASE WHEN action = 2 THEN MAX(created_at) END AS `open` from activity GROUP BY action,contact_id;
------------ -------- ------------ ------------
| contact_id | action | click | open |
------------ -------- ------------ ------------
| 2713294 | 1 | 1812590363 | NULL |
| 2713295 | 1 | 1712990363 | NULL |
| 2713294 | 2 | NULL | 1818590863 |
| 2713295 | 2 | NULL | 1832890363 |
------------ -------- ------------ ------------
Можно ли это сделать? если да, то можете ли вы дать мне какие-либо предложения по этому поводу?
Спасибо