0

mysql データベースで呼び出しのコストを計算するには、どのクエリを実行する必要がありますか?

2 つのテーブルがあります。1 つは通話時間の通話ログ、もう 1 つはピーク料金とオフピーク料金の料金テーブルです。ピーク時間は 08:00:00 - 19:00:00 オフピーク時間は 19:00:00 - です。 08:00:00。ピーク時のレートは、1 分あたり 10 ペンス、1 秒あたり 0.9992 などです。そしてオフピーク2p分。

2 つのテーブルを照会して、通話時間と通話のコスト (秒/分あたりの料金) に基づいて通話のコストを計算する方法を知りたいです。

出力は、CallerId、Source、Destination、call duration、cost of call を含む別のテーブルにあります。

4

1 に答える 1

0

これは比較的簡単に思えます(これは通常、何かが足りないことを意味します)。

仮定から始めます。CALL_LOGテーブルが次のようになっているとします。

CallerId
Source
Destination
Duration
CallStartTime
CallStopTime

。。。TARRIFFテーブルは次のようになります。

Id
RateType (Peak or OffPeak)
RateStartTime
RateStopTime
Rate

特に言及されていないので、Oracleを使用していると仮定しましょう。しかし、あなたはCDRと言っているので、おそらく多くのレコード、つまりOracleかもしれません。 (注:Oracle固有のコードを削除し、これを内部結合として実行することにしました。ボリュームによっては、遅すぎる可能性があります。)

また、「オフピークコール」の定義は、いつ終了するかに関係なく、オフピーク時に開始するコールであると想定します。(この定義は、正しく実行するために重要であることに注意してください。)

最後に、コメントに基づいて、ピークとオフピークの2つのレートしかないと仮定しましょう。それは奇妙に思えますが、大丈夫です。週末の料金を考慮して、時間は日によって異なると思いましたが、推定できるはずです。

したがって、通話の費用は次のようになります。

SELECT l.CallerId, 
       l.Source, 
       l.Destination, 
       l.Duration, 
       t.RateType, 
       l.Duration * t.Rate as Cost
FROM CALL_LOG l
  INNER JOIN TARRIF t
    ON l.CallStartTime BETWEEN t.RateStartTime and t.RateStopTime
于 2011-04-26T19:03:46.217 に答える