Да, вы можете использовать запрос с подзапросом или функцию row_number(), чтобы получить одну запись с максимальной датой для каждого пользователя. Представим, что ваша таблица "keys" имеет колонки "user_id", "device_id", и "issued_at".
Запрос с использованием row_number() может быть таким:
```sql
SELECT user_id, device_id, issued_at
FROM (
SELECT user_id, device_id, issued_at,
ROW_NUMBER() OVER(PARTITION BY user_id ORDER BY issued_at DESC) as rn
FROM keys
) t
WHERE rn = 1
```
В этом запросе, row_number() нумерует записи для каждого пользователя (за счет PARTITION BY user_id) в порядке убывания даты выдачи ключа (за счет ORDER BY issued_at DESC). Затем из этого набора данных выбираются только записи с номером 1, то есть с максимальной датой выдачи ключа для каждого пользователя.
Если вы хотите использовать подзапрос, запрос может выглядеть следующим образом:
```sql
SELECT k1.user_id, k1.device_id, k1.issued_at
FROM keys k1
JOIN (
SELECT user_id, MAX(issued_at) as max_issued_at
FROM keys
GROUP BY user_id
) k2
ON k1.user_id = k2.user_id AND k1.issued_at = k2.max_issued_at
```
В этом запросе, подзапрос выбирает максимальную дату выдачи ключа для каждого пользователя. Затем основной запрос присоединяет этот подзапрос к исходной таблице "keys", чтобы получить всю информацию о записи с максимальной датой выдачи ключа.