stavo lavorando per una società di telecomunicazioni qualche anno fa e ho dovuto generare una formula che calcola la durata di una chiamata secondo il seguente algoritmo:formula matematica per il calcolo della durata delle chiamate
- t1 è il primo periodo
- t2 è il periodo ricorrente
- RCT è il tempo effettivo di chiamata (in secondi)
- CD è la durata della chiamata efficace (ai fini della fatturazione)
se RCT è minore di t1, allora il CD è uguale a t1
se RCT è maggiore di t1, quindi CD = t1 + x * t2, dove x "arrotonda" RCT al successivo multiplo più alto di t2.
Questo algoritmo si traduce in: "Carica per i primi t1 secondi, quindi carica ogni t2 secondi dopo quello".
Esempio:
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
Si può creare una funzione/SQL che restituirà la "durata della chiamata" CD?
Senza usare se poi altro ...?
Non dovrebbe essere 'soffitto ((RCT -t1)/t2) 'invece di' (floor ((rct-t1)/t2) +1) '? In caso contrario, 60-10-70 produrrebbe un CD di 80. –
inserire i valori delle chiamate (60, 10, 70, 70) inserire i valori delle chiamate (60, 10, 80, 80) Questi non funzionano –
Questi inserti presuppongono una sintassi che può implicare il formato della tabella. Aggiungi il (t1, t2, rct, cd) se necessario. – Godeke