ORACLE SQL リファレンス(逆引き)

ORACLE SQL リファレンス

Web oracle.se-free.com
ソートしたレコードの最終行に集計関数を使用する( KEEP、LAST )
スポンサード リンク

ソートしたレコードの最終行に集計関数を使用するには、LAST関数を使用する。

集計関数() KEEP ( DENSE_RANK LAST ORDER BY ソート列1,[ソート列2,・・・] )
ソート列でソートされたレコードの最終行を、指定した集計関数で集計した結果が返されます。

指定可能な集計関数 : AVG()、COUNT()、MAX()、MIN()、SUM()、STDDEV()、VARIANCE()


サンプル表「emp01」データ

SQL> select * from emp01;

EMP_ID DEPT_ID EMP_NAME  YEARS     SALARY
----- -----  ---------- ---------- ----------
E01   D01    なまえ1    3        150
E02   D02    なまえ2    7        200
E03   D03    なまえ3    7        300
E04   D02    なまえ4    7        400
E05   D03    なまえ5    3        500
E06   D02    なまえ6    3        600



例1) 列「years」の昇順でソートしたレコードの最終行で、「salary」の最大値を取得します。

SQL> select
  2  max( salary ) keep ( dense_rank last order by years ) as salary
  3 from emp01;

SALARY
----------
400


 ※列「years」の昇順にソートしたレコードの最終行なので「years」=7のレコードの中での、最大値を取得するので400となります。


例2) 列「years」の降順でソートしたレコードの先頭行で、列「dept_id」別に「salary」の最大値を取得します。

SQL> select
  2  dept_id,
  3  max( salary ) keep ( dense_rank last order by years ) as salary
  4 from emp01
  5 group by dept_id;

DEPT_ID SALARY
------ ----------
D01    150
D02    400
D03    300



スポンサード リンク


レコード件数を取得する( COUNT )
最大値を取得する( MAX )
平均値を取得する( AVG )
最小値を取得する( MIN )
グループ単位に集計する( SUM、GROUP BY )
グループ単位に集計結果の値から指定条件でレコードを抽出する( HAVING )
ランキング(仮説ランク)を取得する( RANK、DENSE_RANK )
パーセントランク(仮説ランク)を取得する( PERCENT_RANK )
ソートしたレコードの先頭行に集計関数を使用する( KEEP、FIRST )
ソートしたレコードの最終行に集計関数を使用する( KEEP、LAST )
小計を計算する( ROLLUP )
クロス集計する( CUBE )
小計行とグループ化された集計行を区別する( GROUPING、GROUPING_ID )
標準偏差を取得する( STDDEV )
累積標準偏差を取得する( STDDEV_SAMP )
母集団標準偏差を取得する( STDDEV_POP )
分散を取得する( VARIANCE )
累積分散を取得する( VAR_SAMP )
母集団分散を取得する( VAR_POP )
中央値を取得する( MEDIAN )
相関係数を取得する( CORR )

SQL(DML) へ
忘れっぽいエンジニアのオラクルSQLリファレンス TOPへ