次の SQL の問題があり、実際にこれを行う最も効率的な方法を探しています。次のテーブルがあるとします。
r|Company - StartPeriod - EndPeriod - NumberOfEmployees - NumberOfMachines ...
1|A - 2014-1-1 - 2014-2-5 - 30 - 1
2|A - 2014-2-6 - 2014-3-7 - 30 - 1
3|A - 2014-3-8 - 2014-4-9 - 31 - 1
4|A - 2014-4-9 - 2014-5-1 - 32 - 1
5|B - 2014-1-2 - 2014-2-1 - 20 - 2
6|B - 2014-2-2 - 2014-3-1 - 20 - 2
7|B - 2014-3-2 - 2014-4-1 - 20 - 2
冗長なデータ量に気付きましたか? これは、企業がときどきサンプリングされるため、期間の長さが実際にはランダムであるためです。
問題は、NumberOfEmployees、NumberOfMachines などの変数が同じで、StartPeriod と Endperiod が異なる場合にのみ、行をマージするにはどうすればよいかということです。もちろん、開始期間を最も早いものに、終了期間を最も遅いものに置き換えたいと思います。
r は単なる指標であり、データベース内の変数ではありません。この場合、1 と 2 はマージされますが、値が異なるため (つまり、従業員数が 30 人ではなく 31 人であるため)、3,4 は保持されます。
私の意見では、これは非常に難しい問題であり、SQL がこれを実行できるかどうかさえわかりません。
結果の出力は次のようになります。
r|Company - StartPeriod - EndPeriod - NumberOfEmployees - NumberOfMachines ...
1|A - 2014-1-1 - 2014-3-7 - 30 - 1
2|A - 2014-3-8 - 2014-4-9 - 31 - 1
3|A - 2014-4-9 - 2014-5-1 - 32 - 1
4|B - 2014-1-2 - 2014-4-1 - 20 - 2
すべてに感謝します!