Я наткнулся на таблицу базы данных, структурированную так: каждый раз, когда пользователь входит в систему, в базу данных добавляется новая запись с его именем пользователя, устройством, unix меткой времени входа в систему и 10 другими столбцами. Для каждого пользователя я хочу выбрать его самый последний логин. Итак, я делаю это:
with query1 as (
select
user,
MAX(last_login)
from
users_table
group by
user
)
В качестве проверки каждый пользователь связан только с одной строкой, его последний логин:
select count(distinct user) from query1 == select count(user) from query1
В этом и заключается проблема. Я хочу добавить еще один столбец к выбору, поэтому я добавляю к group by
тоже ...
with query1 as (
select
user,
device,
MAX(last_login)
from
users_table
group by
user,
device
)
тогда длины не равны. По той причине, что я спрашиваю об этом, некоторые пользователи связаны с одной строкой, а некоторые пользователи связаны с несколькими строками.
select count(distinct user) from query1 != select user from query1
Есть ли что-то, что я не рассматриваю, так как хочу выбрать максимальное значение 1 столбца, но также получить всю строку?