2010/03/07

[oracle]別回答

ちょっと下記の記事にて気になるところがあったので、コメントしたいなと。

・memberテーブルから、グループ(category)ごとに最も年齢(age)の高い人をそれぞれ取得

SELECT *
FROM
(
SELECT
id, age, category,
rank() OVER (PARTITION BY category ORDER BY age DESC) as rank
FROM member
) rn
WHERE rn.rank = 1

via:OracleでのLIMITの記述あれこれ

これよりももっと簡単な方法があるのかなっーと

idをselectする必要がない場合
SELECT id
, max(age)
, category
FROM member
GROUP BY category

こうすれば、select文をネストさせる必要はなく、すっきりとして見やすいと思います。

0 コメント:

コメントを投稿