0

我需要做什么查询来计算 mysql 数据库中的调用成本?

我有两张表,一张是带有通话时长的通话记录,另一张是包含高峰和非高峰费率的资费表,高峰时间是 08:00:00 - 19:00:00 非高峰时间是 19:00:00 - 08:00:00。峰值速率是每分钟 10 便士或每秒 0.9992 或类似的东西。和非高峰 2p 分钟。

我想知道如何查询这两个表以根据通话时长和通话费用计算通话费用 - 每秒/分钟的速率。

输出将在另一个表上,包括 CallerId、Source、Destination、通话时长、通话费用

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 特定的代码并决定将其作为内部连接来执行。不过可能太慢,具体取决于数量。)

让我们假设“非高峰通话”的定义是在非高峰时间开始的通话,无论何时结束。(请注意,此定义对于正确执行此操作至关重要。)

最后,让我们根据您的评论假设只有两种费率,高峰和非高峰。这看起来很奇怪,但没关系。我原以为时间会每天有所不同,以考虑周末价格,但您应该能够推断。

因此,通话费用为

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 回答