1
0

Rails SQLでデータ整形(ROUMD, SUM)

Posted at

はじめに

Railsでデータを取得する際に、SQLでROUND内でSUMをして、平均や率として取得する際に一癖あったので備忘録として残しておきます。

やりたいこと

レコードからデータを取得するときに率として取得したい。

一部 / 全体 * 100のようなイメージ

普通にレコードを取得してから計算することもできるが、アプリの仕様上やクエリ上、viewへの表示、CSVダウンロードなどにも使用するため取得時にデータを整形しておくことが良いと判断しております。

コードサンプル

select(
    "ROUND((SUM(一部) / NULLIF(SUM(全体), 0.0)) * 100)
    as 算出したい率,
    ..."
)

ポイントとしてNULLIF()を用いることで分母が0.0の場合でもエラーにならないようにしている。
筆者はこの0.0の箇所を0にしていたがために、期待する結果にならず多くの時間を費やした。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0