[解決済み】PostgreSQLで平均値を小数点以下2桁に丸めるには?
2022-04-07 15:04:32
質問
Ruby gem 'sequel' を使って PostgreSQL を使っています。
小数点以下2桁に丸めたいのですが。
以下は私のコードです。
SELECT ROUND(AVG(some_column),2)
FROM table
以下のようなエラーが発生します。
PG::Error: ERROR: function round(double precision, integer) does
not exist (Sequel::DatabaseError)
以下のコードを実行してもエラーになりません。
SELECT ROUND(AVG(some_column))
FROM table
何が間違っているのか、どなたかご存知ですか?
解決方法は?
PostgreSQLでは
round(double precision, integer)
. 理由としては
@Mike Sherrill「キャット・リコール」。
がコメントで説明しているように、精度を取る round のバージョンは
numeric
.
regress=> SELECT round( float8 '3.1415927', 2 );
ERROR: function round(double precision, integer) does not exist
regress=> \df *round*
List of functions
Schema | Name | Result data type | Argument data types | Type
------------+--------+------------------+---------------------+--------
pg_catalog | dround | double precision | double precision | normal
pg_catalog | round | double precision | double precision | normal
pg_catalog | round | numeric | numeric | normal
pg_catalog | round | numeric | numeric, integer | normal
(4 rows)
regress=> SELECT round( CAST(float8 '3.1415927' as numeric), 2);
round
-------
3.14
(1 row)
(上記で、以下の点に注意してください。
float8
の単なる省略形エイリアスです。
double precision
. PostgreSQLが出力でそれを展開していることがわかります)。
丸める値をキャストする必要があります。
numeric
の2つの引数形式を使用します。
round
. を追加するだけです。
::numeric
のような省略形のキャストを使用します。
round(val::numeric,2)
.
ユーザーに表示するための書式を設定する場合は
round
. 使用方法
to_char
(を参照してください)。
データ型フォーマット関数
を使用すると、書式を指定することができ、その書式に応じた
text
の結果は、クライアントの言語で
numeric
の値として使用することができます。例えば
regress=> SELECT to_char(float8 '3.1415927', 'FM999999999.00');
to_char
---------------
3.14
(1 row)
to_char
は、書式の一部として数字を丸めてくれます。そのため
FM
プレフィックスは
to_char
は、先頭の空白を含むパディングを必要としないことを意味します。
関連
-
[解決済み】参照するテーブルにプライマリーキーやキャンディデートキーがない
-
[解決済み] 3を挿入すると「ORA-01438: この列で許容される指定精度より大きい値」と表示される。
-
[解決済み] psql: FATAL: データベース "<user>" が存在しない
-
[解決済み] SQL ServerでSELECTからUPDATEする方法とは?
-
[解決済み] PostgreSQLの場合。PostgreSQLのテーブルを表示する
-
[解決済み] PostgreSQLの "DESCRIBE TABLE"
-
[解決済み] PostgreSQL コマンドラインユーティリティ: psql を終了する方法
-
[解決済み] PostgreSQLのユーザーパスワードを変更する方法を教えてください。
-
[解決済み] どのバージョンのPostgreSQLを使用していますか?
-
[解決済み] PostgreSQLからのPL/pgSQL出力をCSVファイルに保存する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】ストアドプロシージャーのエラー ORA-06550
-
[解決済み】Excelに合体的な関数はありますか?
-
[解決済み】PL/SQL SELECTに複数のCOUNT(DISTINCT xxx)を指定すると、予期しない結果になる。
-
[解決済み】BULK INSERTで「予期せぬファイルの終了」エラーが発生したROWを特定する?
-
[解決済み】SQL Server サブクエリが1つ以上の値を返しました。サブクエリが =, !=, <, <= , >, >= に続く場合、これは許可されません。
-
[解決済み】SQL ServerでIdentityカラムを更新する方法は?
-
[解決済み] SQLクエリ「00904. 00000 - "%s: 無効な識別子".
-
[解決済み] ORA-12801: 並列クエリサーバー P004 および ORA-01555 でシグナルされたエラー: スナップショットが古すぎる。
-
[解決済み] CLOBとNCLOBの違いは何ですか?
-
[解決済み] マルチパート識別子をバインドできなかった