仅列出唯一用户
List only unique users
Table 为 users
,列为 user_id
、firstname
、lastname
、area
.
另一个table是user_sessions
,列是user_id
,logon
,logoff
。
查看谁登录我使用
select u.FIRSTNAME, u.LASTNAME, u.PHONE_ID, us.LOGON
from USERS u
join USER_sessions us on u.USER_ID=us.user_id
where cast (us.LOGON as date) = date 'now'
and us.LOGOFF is null
order by u.FIRSTNAME
结果是正确的,但有时我会得到重复的条目。
例如,相同的firstname
和lastname
,但不同的登录。我只想看到最新的登录。
看起来字段LOGON
是一种时间戳类型的字段;你的问题不是很准确。
所以,我想,你想要 LOGON
的最大值。为此,有一个聚合函数 MAX()
必须与 GROUP BY
.
一起使用
select u.FIRSTNAME, u.LASTNAME, u.PHONE_ID, MAX(us.LOGON)
from USERS u
join USER_sessions us
on u.USER_ID = us.user_id
where cast (us.LOGON as date) = date 'now'
and us.LOGOFF is null
group by u.FIRSTNAME, u.LASTNAME, u.PHONE_ID
order by u.FIRSTNAME
每次出现 u.FIRSTNAME, u.LASTNAME, u.PHONE_ID
时,您都会获得最新的 LOGON
。
请注意,您可以使用 current_date
上下文变量而不是 date 'now'
强制转换。
Table 为 users
,列为 user_id
、firstname
、lastname
、area
.
另一个table是user_sessions
,列是user_id
,logon
,logoff
。
查看谁登录我使用
select u.FIRSTNAME, u.LASTNAME, u.PHONE_ID, us.LOGON
from USERS u
join USER_sessions us on u.USER_ID=us.user_id
where cast (us.LOGON as date) = date 'now'
and us.LOGOFF is null
order by u.FIRSTNAME
结果是正确的,但有时我会得到重复的条目。
例如,相同的firstname
和lastname
,但不同的登录。我只想看到最新的登录。
看起来字段LOGON
是一种时间戳类型的字段;你的问题不是很准确。
所以,我想,你想要 LOGON
的最大值。为此,有一个聚合函数 MAX()
必须与 GROUP BY
.
select u.FIRSTNAME, u.LASTNAME, u.PHONE_ID, MAX(us.LOGON)
from USERS u
join USER_sessions us
on u.USER_ID = us.user_id
where cast (us.LOGON as date) = date 'now'
and us.LOGOFF is null
group by u.FIRSTNAME, u.LASTNAME, u.PHONE_ID
order by u.FIRSTNAME
每次出现 u.FIRSTNAME, u.LASTNAME, u.PHONE_ID
时,您都会获得最新的 LOGON
。
请注意,您可以使用 current_date
上下文变量而不是 date 'now'
强制转换。