トップページに戻る
次のSQLパズルへ
前のSQLパズルへ
7-19 レコードがあれば最大値を取得
SQLパズル
Ageテーブルにレコードが存在したらAgeの最大値を取得する。
Ageテーブルにレコードが存在しない場合は、行を返さない(取得行が0行)
SQL
--■■■Ageテーブルにレコードが存在しない場合(havingを使用)■■■
with Ageテーブル as (select 10 as age from dual where RowNum=0)
select max(age) as MaxAge from Ageテーブル
having count(*) >=1;
--■■■Ageテーブルにレコードが存在しない場合(分析関数を使用)■■■
with Ageテーブル as (select 10 as age from dual where RowNum=0)
select distinct max(age) over() as MaxAge from Ageテーブル;
--■■■Ageテーブルにレコードが存在する場合(havingを使用)■■■
with Ageテーブル as (select 10 as age from dual union select 20 from dual)
select max(age) as MaxAge from Ageテーブル
having count(*) >=1;
--■■■Ageテーブルにレコードが存在する場合(分析関数を使用)■■■
with Ageテーブル as (select 10 as age from dual union select 20 from dual)
select distinct max(age) over() as MaxAge from Ageテーブル;
解説
having句で件数をチェックして、0件の場合に、行を返さないようする方法や、
分析関数を使う方法があります。