フィールドがあるテーブルがあります: この値 - 1023とQualityCode - 53はランダムな時間に発生する可能性がありますすべてのMeterNumには約24個の値があり、ROW_IDは24まで増分してから新しいMeterNumに対して1から始まり、少なくとも別のエイリアス列を追加しない場合は、平均を46と21(row_num 19 & 21)に置き換える必要があります。 selectステートメント私はケースステートメントを思いついてみようとしていましたが、私は値を平均化することができません、誰かがこれを助けることができます。SQLのcase文を使用して条件を満たすレコードの連続する値を平均する方法
0
A
答えて
3
あなたはCASE文の内部のロジックのこの種を行うにLagとLeadを使用することができます。
UPDATE TABLE
SET VALUE = CASE
WHEN VALUE = 1023
THEN (
Lag(Value, 1) OVER (PARTITION BY meternum ORDER BY row_id ASC)
+ Lead(Value, 1) OVER (PARTITION BY meternum ORDER BY row_id ASC)
)/2
ELSE VALUE
END
ラグとリードはウィンドウ関数です。ラグは、指定されたレコード数(ここでは1に戻ります)を返し、値を取得します。これは、PARTITION BY句(ここでは、同じMeterNumを持つレコードのみを戻す)でどのレコードを決定し、ORDER BY句でレコードの順序を決定します(ここでは、row_idによって順序付けされます)。
+0
ありがとう、これは完全に動作します。しかし、1つの問題はありますが、値= 1023が2つ以上の間隔で一貫している場合、最初と最後の関連する値を取って平均をとり、それらの複数の1023の値に対して適用します。 例:値は24,1023です、1023,1023,32の場合、私は24と32の平均をとって、3つの1023の値すべてにその値を適用することになっています。 あなたはそれについて何か提案してもらえますか? @JNevill – user1960217
関連する問題
- 1. SQLでselect caseを使用して2つの条件で注文する
- 2. Accessでレコードが特定の条件を満たすフィールドのみ平均化するには?
- 3. cvMatの平均値を計算して使用する方法
- 4. 条件を満たす場合に連続した行をサブセット化する方法
- 5. シェルスクリプト内の指定された条件を満たす場合の平均を計算する
- 6. 条件文中の条件を使用したSQL検索
- 7. CASEを使用し、次にCASTを使用してCAST値を使用して平均を実行します。
- 8. CASEを使用したSQL結合条件
- 9. 条件付き平均を計算するための "ループスルー" data.table
- 10. 条件が2つの大きなint値を追加するSQL case文
- 11. レコードが条件を満たしていれば、Python offsetカラムの値が前のレコードの値となります
- 12. Rails - 条件を満たすすべてのレコードを削除する
- 13. 複数の条件を満たす場合、複数のカラムを平均化する場合は
- 14. 条件文を使用してmysqlを結合する方法
- 15. SQL Select文IF文を使用し、条件に数値を適用する
- 16. 平均を構成するレコードのリストを取得するSQL
- 17. Oracle:条件を満たすレコードを表示しない
- 18. 条件が満たされるまで連続ループ
- 19. 条件を満たす回答を確認する方法
- 20. Pythonで条件文を使用してデバッグする方法は?
- 21. SQL Server:select caseの値を使用する
- 22. raw SQLのUPDATEが条件を満たしていてもすべてのレコードをヒットしない
- 23. アプリスクリプトを使用してGoogleスプレッドシートに条件を満たすメールをインポートする
- 24. SQL Server sp_msforeachtableは、ある条件を満たすテーブルのみを選択するために使用します。
- 25. 条件を満たすときに接続テーブルからレコードを削除
- 26. Spark:Scalaを使用したreduceByKeyの値の平均ではなく値の平均
- 27. Rコーディング:データフレーム内の条件付き合計/平均を複数の条件とする方法
- 28. 日時の連続平均
- 29. SQLを使用して平均顧客数を計算する
- 30. JOIN条件でCASE文を使用できますか?
素敵なテキスト表に戻ってください。答えを出すためにテストするためにデータを複製する必要がある人は、テーブルの写真は無用です。各行に4つのスペースを入れてテキストテーブルをインデントしてください。最後に編集する前に私の編集を参照してください。 – JNevill