我需要用什么查询来计算mysql数据库中的调用成本?
我有两张桌子,一张是有通话时间的通话记录,另一张表是有峰值和非高峰率的关税表,高峰时间是08:00:00 - 19:00:00非高峰时间是19:00 :00 - 08:00:00峰值的速率是每分钟10便士或每秒0.9992或其他东西。 2分钟左右。
我想知道如何根据通话时长和通话费用 - 每秒/分钟的费率来查询两个表来计算通话费用。
输出将在另一个包含CallerId,来源,目的地,通话时长,通话费用
的表格上答案 0 :(得分:0)
这似乎相对简单(这通常意味着我遗漏了一些东西)。
从假设开始。假设CALL_LOG表如下所示:
CallerId
Source
Destination
Duration
CallStartTime
CallStopTime
。 。 。而TARRIFF表如下所示:
Id
RateType (Peak or OffPeak)
RateStartTime
RateStopTime
Rate
我们假设您使用的是Oracle,因为我没有看到具体提到的。但你说CDR,所以可能有很多记录,所以也许是甲骨文。 (注意:我删除了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