tencent cloud

Cloud Log Service

ドキュメントCloud Log Serviceよくあるご質問検索分析関連統計分析(SQL)結果の小数点以下桁数が不正確

統計分析(SQL)結果の小数点以下桁数が不正確

ダウンロード
フォーカスモード
フォントサイズ
最終更新日: 2026-10-12 15:06:45
AI翻訳

現象1:小数桁が保持されず、整数部のみ

类似の検索分析ステートメントを使用する場合、小数点以下2桁を保持することが期待されますが、結果には整数部分のみが含まれます:
検索分析ステートメント:
* | select count_if(status>=400)*100/count(*) as "エラーログの割合"
結果:
0
たとえround関数を使用して保持する小数点以下桁数を指定しても、結果には依然として整数部分のみが含まれます:
検索分析ステートメント:
* | select round(count_if(status>=400)*100/count(*),2) as "エラーログの割合"
結果:
0

原因

SQLでは、整数(bigint)同士で除算を行う場合、結果は依然として整数となり、整数に対してround関数を使用しても無効です。

対処方法

方法1:
四則演算では、乗算を使用して整数(bigint)の1つを小数(double)に変換します。例えば:
* | select round(count_if(status>=400)*100.0/count(*),2) as "エラーログの割合"
方法2:
型変換関数を使用して整数(bigint)の1つを小数(double)に変換します。例えば:
* | select round(cast(count_if(status>=400)*100 as double)/count(*),2) as "エラーログの割合"

現象2:小数桁の保持が不正確

类似の検索分析ステートメントを使用する場合、小数点以下2桁を最終的に保持することが期待されますが、結果には14桁が保持されます:
検索分析ステートメント:
* | select round(count_if(status>=400)*1.0/count(*),5)*100 as "エラーログの割合"
結果:
99.99900000000001

原因

count_if(status>=400)*1.0/count(*)の結果型はdoubleです。round関数を使用した後も結果はdoubleのままであり、さらに演算を行う際に小数桁の正確性を保証できなくなります。

解決方法

すべての演算を完了した後、最終的に小数桁数をまとめて保持します。例えば:
* | select round(count_if(status>=400)*100.0/count(*),3) as "エラーログの割合"


ヘルプとサポート

この記事はお役に立ちましたか?

フィードバック