私は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
1 人が複数の 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)