datetime
各行の開始時刻と終了時刻を表す2 つのフィールドを持つ最大 50,000 レコードが与えられた場合、SQL Server クエリを作成して、開始日と終了日の間の任意の時間範囲のバケット ( 30 分、0 ~ 1 時間など)を含むヒストグラムを作成するにはどうすればよいですか? 1 ~ 2 時間、2 ~ 4 時間、4 ~ 8 時間、8 ~ 24 時間、24 ~ 48 時間、48 ~ 72 時間、3 ~ 5 日、7 日以上?
すべてのバケット (この場合は 10) に対してクエリを実行することを回避する賢い方法があることを願っています。私は軽い ORM として LINQ-to-SQL を使用していますが、生の SQL でも問題ありません。
私の素朴なアプローチは、最初にすべてを 60 分ずつバケットに入れ、次にサブクエリを実行して不規則な各バケットを引き出すことです。
編集: LINQCASE
でステートメントを生成できることを学んだばかりなので、LINQ バージョンのボーナスポイント。期間テーブルとCASE
ステートメントの間のパフォーマンスに関する考慮事項はありますか?