Jetbrains Exposed 集約関数の使い方

Jetbrains Exposed 集約関数の使い方

Jetbrains Exposed の集約関数の使い方まとめです。

GROUP BY

group化対象を指定します。

StarWarsFilms
  .slice(StarWarsFilms.sequelId.count(), StarWarsFilms.director)
  .selectAll()
  .groupBy(StarWarsFilms.director)

集約関数

COUNT

件数をカウントします。

StarWarsFilms
  .slice(StarWarsFilms.sequelId.count(), StarWarsFilms.director)
  .selectAll()
  .groupBy(StarWarsFilms.director)

SUM

値を合計します。

StarWarsFilms
  .slice(StarWarsFilms.sequelId.sum(), StarWarsFilms.director)
  .selectAll()
  .groupBy(StarWarsFilms.director)

MAX

最大値を取得します。

StarWarsFilms
  .slice(StarWarsFilms.sequelId.max(), StarWarsFilms.director)
  .selectAll()
  .groupBy(StarWarsFilms.director)

MIN

最小値を取得します。

StarWarsFilms
  .slice(StarWarsFilms.sequelId.min(), StarWarsFilms.director)
  .selectAll()
  .groupBy(StarWarsFilms.director)

AVERAGE

平均値を取得します。

StarWarsFilms
  .slice(StarWarsFilms.sequelId.average(), StarWarsFilms.director)
  .selectAll()
  .groupBy(StarWarsFilms.director)

CASE

SQLのCASE文を使用し、集約関数に条件を追加します。
例: directorがsampleのデータを件数を取得する

import org.jetbrains.exposed.sql.Case
import org.jetbrains.exposed.sql.Expression
import org.jetbrains.exposed.sql.IntegerColumnType
import org.jetbrains.exposed.sql.Sum
import org.jetbrains.exposed.sql.alias
import org.jetbrains.exposed.sql.intParam

val summary = Expression.build {
  Sum(Case()
    .When(StarWarsFilms.director eq "sample", intParam(1)
    .Else(intParam(0)),
    IntegerColumnType()
  ).alias("summary")
}

StarWarsFilms
  .slice(
    summary,
    StarWarsFilms.director)
  .selectAll()
  .groupBy(StarWarsFilms.director)

プログラミングカテゴリの最新記事