アカウントのデータベースにクエリを実行しようとしています。各データベースには複数のエントリがあり、各アカウントから合計、平均、最小、最大、およびカウントを取得しています。以下のコードは、1つのアカウントの例です。問題は、最小値が最大値よりも大きいエントリを多数取得することです。これらのアカウントの一部をスポットチェックしましたが、平均が正しく計算されているように見えるため、データ型の問題ではないと思います。 11の先頭の「1」が9よりも小さいと読み取られますか?もしそうなら、どうすればこれを修正できますか?
SELECT `Account` ,
--`CustomerName` ,
`METER_SIZE` ,
SUM(`Consumption`) AS `Total_Cons` ,
AVG(`Consumption`) AS `Avg_Cons` ,
MIN(`Consumption`) AS `Min_Cons` ,
MAX(`Consumption`) AS `Max_Cons` ,
COUNT(`Consumption`) AS `Bills`
FROM `Billing_Meterreads_2015_2017`
WHERE `CustomerClass` LIKE 'Residential'
AND `Account` LIKE '000000280' ;
戻り値
|Account | METER_SIZE | Total_Cons | Avg_Cons | Min_Cons | Max_Cons | Bills |
|000000280 | 3/4 | 597.0 | 7.6538 |11.00000 | 9.00000 | 78 |
回答 1 件
関連記事
- または-ツール:一部のIntVarの合計が0より大きい場合、それ以外の場合は0の場合にBoolVarの値を設定するにはどうすればよいですか?
- ファイヤーストアタイムスタンプクエリが値を返さない
- データフレーム列の特定の値より大きい値を置き換える方法は?
- JavaScriptの「Ifステートメント」が真の値を返さない
- Sqliteクエリ:SELECTFROMは0の結果を返します
- サブクエリが別のテーブルからカウント値を返していません
- 特定の条件下で値の代わりにエラーを返す
- Rの特定の値に基づいて、最も近くて大きい値を選択します
- 関数からヒープに割り当てられた値を返しますか?
- 合計が常に1以上になるような最小初期値を見つけます
Consumption
のデータ型を確認してください です。あなたはおそらくそれがタイプの問題であり、Consumption
であることを前提としています 「1」<「9」であるため、「11.00000」<「9.0000」の文字列です。AVG
文字列に平均がないため、SQLiteはサイレントに数値に変換されるため、機能している可能性があります。可能な解決策:
良い:列のデータ型を変更します。
あまり良くない:
min(cast(consumtion as decimal))
、max(cast(consumtion as decimal))