トップページに戻る
次のSQLパズルへ
前のSQLパズルへ
12-3 グループの平均年齢を取得
SQLパズル
年齢テーブル
会員番号 年齢 グループ
-------- ---- --------
001 20 B
002 30 C
003 60 A
004 40 C
005 40 B
006 50 C
会員が二人以上いるグループの、平均年齢を出力する。
出力結果
グループ 平均年齢
-------- --------
B 30
C 40
データ作成スクリプト
create table 年齢(
会員番号 char(3),
年齢 number(2),
グループ char(1));
insert into 年齢 values('001',20,'B');
insert into 年齢 values('002',30,'C');
insert into 年齢 values('003',60,'A');
insert into 年齢 values('004',40,'C');
insert into 年齢 values('005',40,'B');
insert into 年齢 values('006',50,'C');
commit;
SQL
col グループ for a8
--■■■グループ化する方法■■■
select グループ,
avg(年齢) as 平均年齢
from 年齢
group by グループ
having count(*) >= 2
order by グループ;
--■■■分析関数を使う方法■■■
select グループ,平均年齢
from (select distinct グループ,
avg(年齢) over(partition by グループ) as 平均年齢,
count(*) over(partition by グループ) as グループカウント
from 年齢)
where グループカウント >= 2
order by グループ;
解説
count関数の結果が、2以上かチェックしてます。