2

重複の可能性:
Oracleで最も高い値を持つレコードを表示するにはどうすればよいですか?

データベースから最年長の人の名前と年齢を表示することになっています。私が使用したコードには、名前と数人の計算された年齢が表示されますが、1人の最年長の人は表示されません。これを機能させるにはどうすればよいですか?これが私のコードです

select dr_drvname as "Name", trunc(max((sysdate-dr_brthdate)/365)) as "Highest AGE"
from driver,dual
group by dr_drvname;
4

3 に答える 3

2

Another way in Oracle would be something like:

SELECT
    dr_drvname AS "Name",
    trunc(months_between(sysdate, dr_birthdate) / 12) AS "Highest Age"
FROM
(
SELECT
    dr_drvname,
    dr_birthdate
FROM
    driver
ORDER BY
    dr_birthdate
)
WHERE
    ROWNUM = 1;
于 2012-11-18T02:00:54.523 に答える
1

次のようなものを試してください。

SELECT top 1
  Firstname, LastName, Max([BirthDate]) as Oldest    
  FROM [Employees]
  group by BirthDate, FirstName, LastName

注:複数の人が同じ誕生日を持っている場合の要件は何ですか?

于 2012-11-18T01:32:58.237 に答える
1

分析関数を使用できます

select dr_drvname as "Name", 
       trunc( months_between( sysdate, dr_birthdate )/ 12 ) "Highest Age"
  from (select dr_drvname ,
               dr_birthdate,
               rank() over (order by dr_birthdate) rnk
          from driver)
 where rnk = 1;
于 2012-11-18T01:45:07.910 に答える