У меня есть таблица в моей базе данных, что я использую SQL-запрос для извлечения данных. В моем запросе я заменяю некоторый текст и используя целые числа. Запрос возвращает данные ниже:Как я могу выбрать max для каждой строки данных на основе метки времени и уникального идентификатора с использованием SQL?
user_id | event_code | total_bookmarks | total_folders | folder_depth | ts
0 8 34 6 1 128926
0 8 35 6 1 129001
4 8 18 2 1 123870
6 8 30 2 1 130099
6 8 30 2 1 132000
6 8 30 2 1 147778
запроса Я использую это:
SELECT
user_id,
event_code,
CAST(REPLACE(data1, 'total bookmarks', '') AS INTEGER) as total_bookmarks,
CAST(REPLACE(data2, 'folders', '') AS INTEGER) as total_folders,
CAST(REPLACE(data3, 'folder depth ', '') AS INTEGER) as folder_depth,
timestamp AS ts
FROM events
WHERE event_code = 8
Что мне нужно добавить в мой запрос, чтобы выбрать только строки для каждого уникального user_id с максимальная ts (временная метка) для каждого идентификатора? Я пробовал MAX (timestamp), но я получаю две строки, возвращенные для одного ID, если total_bookmark отличается (пример: user_id 0 имеет 34 в одной строке и 35 в другом). Я хочу, чтобы таблица выглядела так:
user_id | event_code | total_bookmarks | total_folders | folder_depth | ts
0 8 34 6 1 129001
4 8 18 2 1 123870
6 8 30 2 1 147778
Почему это помечено 'mysql' и' postgresql'? – shmosel
Потому что я использую postgresql, но я предполагаю, что это можно сделать так же или аналогично с mysql – cjh193
Пожалуйста, не делайте этого. Вы зря тратите свое время и все остальные. – shmosel