これが私のテーブルの重要な列です
ItemId RowID CalculatedNum
1 1 3
1 2 0
1 3 5
1 4 25
1 5 0
1 6 8
1 7 14
1 8 2
.....
itemIDが2に増加する前に、rowIDは141に増加します。このサイクルは、約1億2200万行にわたって繰り返されます。
6つのグループでCalculatedNumフィールドを合計する必要があります。したがって、1〜6を合計し、次に7〜12などを合計します。最後に奇数になることがわかっています。最後の3行(番号139、140、141)を破棄できます。次のItemIDに到達したときに、SUMサイクルを再開するために必要です。
ItemIDでグループ化する必要があることはわかっていますが、SQLを一度に6つのCalculatedNumだけでSUMにする方法を理解するのに問題があります。値が同じである列に基づいてSUMに出くわした他のすべて。
MicrosoftのサイトでROW_NUMBER関数を使用しているものを見つけましたが、それを完全に理解することはできませんでした。この質問が明確でない場合はお知らせください。
ありがとうございました
整数の除算とgroupbyを使用できます。
SELECT ItemId, (RowId-1)/6 as Batch, sum(CalculatedNum)
FROM your_table GROUP BY ItemId, Batch
不完全なバッチを破棄するには:
SELECT ItemId, (RowId-1)/6 as Batch, sum(CalculatedNum), count(*) as Cnt
FROM your_table GROUP BY ItemId, Batch HAVING Cnt = 6
編集: 1つのエラーでオフを修正します。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加