gpt4 book ai didi

sql - 计算通话时长的数学公式

转载 作者:行者123 更新时间:2023-12-04 11:46:22 26 4
gpt4 key购买 nike

几年前,我在一家电信公司工作,我必须生成一个公式,根据以下算法计算通话时长:

  • t1 是第一个周期
  • t2 是循环周期
  • RCT 是实际调用时间(以秒为单位)
  • CD 是有效通话时长(用于计费目的)

  • 如果 RCT 小于 t1,则 CD 等于 t1
    如果 RCT 大于 t1,则 CD = t1 + x*t2,其中 x 会将 RCT“四舍五入”到 t2 的下一个最高倍数。

    该算法转换为:“在前 t1 秒充电,然后每 t2 秒充电一次”。

    例子:
    t1  t2  RCT CD  
    60 10 48 60
    60 10 65 70
    60 10 121 130
    30 20 25 30
    30 20 35 50
    30 20 65 70

    你能创建一个函数/SQL来返回“调用持续时间”CD吗?

    不使用 if then else ...?

    最佳答案

    假设 int 列:

    SELECT t1
    ,t2
    ,RCT
    CASE
    WHEN RCT < t1
    THEN t1
    ELSE
    t1 + t2 * ((RCT - t1) / t2 + SIGN((RCT - t1) % t2))
    END AS CD

    不过估计还是有一个CASE,看看能不能去掉。

    只有整数算术(仍然不是 ANSI):
    SELECT  t1
    ,t2
    ,RCT
    ,CD
    ,t1 + SIGN(RCT / t1) * t2 * ((RCT - t1) / t2 + SIGN((RCT - t1) % t2)) AS CalcCD
    FROM Calls

    关于sql - 计算通话时长的数学公式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/497390/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com