2016-11-09 1 views
2

У меня есть файл журнала для приложения, которое показывает два столбца, имя пользователя и временную метку. Я пытаюсь выполнить запрос PostgreSQL, чтобы показывать только в последний раз, каждый пользователь регистрируется вКак выбрать DISTINCT (имя пользователя) и MAX (временная метка) из журнала доступа - postgresql

Это запрос, я поставил вместе до сих пор:.

SELECT DISTINCT username, MAX(timestamp) FROM log 
GROUP BY username, timestamp; 

К сожалению, это все еще дает мне множественным записи имени пользователя, каждый с определенным временем. Любые советы о том, как показывать последнюю метку времени для каждого пользователя?

Я все еще новичок в SQL, поэтому любая помощь будет оценена. Благодарю.

ответ

1

Проблема заключается в group by:

SELECT username, MAX(timestamp) 
FROM log 
GROUP BY username; 

Однако, если вы хотите всю информацию из log записи, DISTINCT ON является лучшим выбором:

SELECT DISTINCT ON (username) l.* 
FROM log 
ORDER BY username, timestamp DESC; 

Вы использование SELECT DISTINCT приводит меня к подозревайте, что это может быть то, что вы хотите.

+0

Это сработало! Brilliant. Я чувствую, что должен был увидеть этот ... –

+0

Хорошо. Хороший совет. Я попробую это и посмотрю, что работает лучше. Еще раз спасибо. –

Смежные вопросы