Questa è la query MySQL da fare per caricare i dati esportati dal sito Vodafone (scegliendo di esportare dei CSV):
LOAD DATA LOCAL INFILE '#FILE#' INTO TABLE traffico FIELDS TERMINATED BY "," IGNORE 3 LINES (tipo, destinazione, numero, @DATA, @durata, costo, note, roaming, sim, tecnologia, operatore, volume_altri_op, volume_vlive) SET DATA = str_to_date(@DATA, '%d/%m/%Y %H:%i:%s'), durata = str_to_date(@durata, '%H:%i:%s');
Si presuppone di chiamare "traffico" la tabella risultate, e che al posto di #FILE# si metta il percorso al file esportato.
Dopo aver caricato tutti i dati, queste sono delle prime query per avere delle analisi indicative:
-- Riepilogo mensile per tipologia (voce, sms...) SELECT date_format(DATA, '%Y%m'), tipo, SUM(costo), COUNT(*) FROM traffico WHERE DATA >= '2010-09-01' GROUP BY date_format(DATA, '%Y%m'), tipo; -- Riepilogo per tipologia SELECT tipo, SUM(costo), COUNT(*) FROM traffico WHERE DATA >= '2010-09-01' GROUP BY tipo;
Questa è una query molto più completa che mostra un riepilogo mensile delle varie parti di costo, e fornisce 4 colonne finali con alcune analisi di quanto avrei speso se avessi avuto attivo un particolare piano (nel caso specifico stavo esaminando una offerta che prevedeva un costo fisso di 19€ che includeva 100min di chiamate a 0.1 cent al minuto - il resto alla normale tariffa - e 100sms a 0.1 cent - il resto alla normale tariffa).
SELECT date_format(DATA, '%Y%m') AS p, SUM(IF(tipo = 'Chiamate voce e video',costo,0)) AS voce_price, SUM(IF(tipo = 'Chiamate voce e video',1,0)) AS voce_no, SUM(IF(tipo = 'Chiamate voce e video',time_to_sec(durata),0))/60 AS voce_min, SUM(IF(tipo = 'Chiamate voce e video',costo,0)) / SUM(IF(tipo = 'Chiamate voce e video',time_to_sec(durata),0))*60 AS voce_price_min, SUM(IF(tipo = 'Servizi di messaggistica',costo,0)) AS sms_price, SUM(IF(tipo = 'Servizi di messaggistica',1,0)) AS sms_no, SUM(IF(tipo = 'Servizi di messaggistica' OR tipo = 'Chiamate voce e video',costo,0)) AS vocesms_price, SUM(IF(tipo = 'Servizi di messaggistica' OR tipo = 'Chiamate voce e video',0,costo)) AS other_price, 19 + IF( SUM(IF(tipo = 'Chiamate voce e video',time_to_sec(durata),0))/60 < 100, SUM(IF(tipo = 'Chiamate voce e video',time_to_sec(durata),0))/60, 100) * 0.01 + IF( SUM(IF(tipo = 'Chiamate voce e video',time_to_sec(durata),0))/60 > 100, SUM(IF(tipo = 'Chiamate voce e video',time_to_sec(durata),0))/60 - 100, 0) * SUM(IF(tipo = 'Chiamate voce e video',costo,0)) / SUM(IF(tipo = 'Chiamate voce e video',time_to_sec(durata),0))*60 + IF( SUM(IF(tipo = 'Servizi di messaggistica',1,0)) < 100, SUM(IF(tipo = 'Servizi di messaggistica',1,0)), 100) * 0.01 + IF( SUM(IF(tipo = 'Servizi di messaggistica',1,0)) > 100, SUM(IF(tipo = 'Servizi di messaggistica',1,0)) - 100, 0) * 0.1 AS new_price FROM traffico GROUP BY date_format(DATA, '%Y%m');
Da notare che la simulazione "new_price" è solo un andamento che tende a quello reale: va considerato che il prezzo delle chiamate voce dipende dall'orario (con il mio piano spendo meno la sera e i festivi), consideralo realmente sarebbe stato complicato, quindi considero il costo chiamata sulla media mensile.
Aggiungi un commento