0

そこにあるmysqlの達人への質問:

労働率とその率が始まる日付をリストしたデータセットがあります。これらの料金は、時間単位、日単位、週単位、または月単位ですらあります。(つまり、誰かが11月6日から週700ドル/週のレートで1週間働いた)

私は、時間の経過に伴う1日の支出をグラフ化するグラフを作成しようとしています。単純な合計とグループのクエリがあります。ただし、週次および月次の料金はそれを歪めています。上記の例では、$ 700のすべてが11月6日に着陸しますが、実際には$ 700のうち1日分($ 100)しか使われていません。

データセットは非常に大きいので、各行をループするのではなく、mysqlにできるだけ多くの手間のかかる作業を行わせるようにしています。ただし、これをプログラムで解決するための保守的な方法がある場合は、モンスタークエリを使用するのではなく、それを受け入れます。

かなり毛深いですよね?何か案は?

これに答えられない場合、私のバックアップ計画は、すべてのデータを1日の料金で保存することですが、元の料金タイプ(週、月)も保存されるため、料金を元に戻すことができます。

4

1 に答える 1

0

私はこれとまったく同じ問題に対処しなければなりませんでしたが、それは真夜中のマークを横切る時間労働に基づいていた.

とにかくビジネスロジックが重要で、Xドルで1週間を1日あたり$(1/7)Xとして計算したいようです。

私がすることは、このクエリを分割し、最初に毎時/毎日を実行することです-簡単に、すべて1日です。次に、毎週/毎月を実行し、最初に簡単な中間データを取得します。次に、先頭-6、先頭-5、. . 開始-1 (毎週の場合)、必要な範囲内にある日の計算を開始します。

必要に応じて、これらすべてのクエリを結合して 1 つの戻りセットを取得できます。

しかし、おそらく mysql の外部で行うのが最善であり、より細かい制御が可能になります。次に、すべてのデータを返し、すべてを非常に高速にループ処理して、先頭と末尾を処理できます。

于 2012-11-15T02:55:02.567 に答える