我对 Oracle 很陌生,最近遇到了一个问题:
我有一个包含以下列的表:person_id、account_login、add_date。
person_id | account_login | add_date
----------|---------------|------------
1 | user1 | 2012-07-10
1 | user2 | 2012-07-09
2 | user3 | 2012-07-05
2 | user4 | 2012-07-04
一个人可以有多个 account_logins。对于每个人,我想获取最旧的 account_login :
person_id | account_login | add_date
----------|---------------|------------
1 | user2 | 2012-07-09
2 | user4 | 2012-07-04
所以我所做的是:
select
person_id,
MAX(account_login) KEEP (DENSE_RANK FIRST ORDER BY add_date)
from
table
group by
person_id;
我得到了我想要的结果,但我认为我的查询语法远非良好。Oracle 强迫我使用聚合函数,我使用 MAX() 或 MIN() 知道它完全没有意义。
有没有办法比这更好地编写查询?(甲骨文 11g)