Beruflich Dokumente
Kultur Dokumente
Estadsticas
MySQL ofrece:
AVG(expresin): Media de los valores
COUNT(expresin): Nmero de elementos del
grupo
MAX(expresin): Valor mximo de la expresin
MIN(expresin): Valor mnimo de la expresin
SUM(expresin): Suma de todos los valores
STDDEV(expresin): Desviacin tpica de los
valores
Estadsticas
Ejemplos sencillos:
mysql> SELECT COUNT(*) FROM home;
mysql> SELECT AVG(tamano) FROM home;
mysql> SELECT MAX(tamano) MIN(tamano) FROM home;
Estadsticas
Caso prctico: calcular el percentil
MySQL no tiene una funcin para hacerlo
Vamos a buscar una forma eficiente de calcularlo
Estadsticas
Para comprobar que es eficiente, vamos a
probarlo en una tabla grande
$ mysqladmin -uroot create pruebas
$ mysql -uroot pruebas -e CREATE TABLE bigtable
(num_1 INT, num_2 INT, num_3 INT, num_4 INT, num_5
INT, date_1 DATE, date_2 DATE, date_3 DATE, date_4
DATE, date_5 DATE, str_1 VARCHAR(200), str_2
VARCHAR(200), str_3 VARCHAR(200), str_4
VARCHAR(50000));
$ mysql -uroot pruebas -e REATE INDEX ON bigtable
(num_1 ASC)
Estadsticas
Editamos big-table.pl
#!/usr/bin/perl
my @base = ("a".."z", "A".."Z", 0..9);
for my $i (0..700000) {
for my $num (0..4) { print rand 1000000000, "\t"; }
for my $dat (0..4) { print rand 12,"/",rand 28,"/2010\t"; }
for my $str (0..2) { print map($base[rand @base], 0..200), "\t"; }
print map ($base[rand @base], 0..50000), "\n";
}
Estadsticas
Creamos unos 4Gb de datos para la tabla
$ perl ./big-table.pl > bigtable.txt
Poblamos la tabla
$ mysqlimport -uroot pruebas /home/formacion/bigtable.txt
sub urlencode {
my ($str) = @_;
return $str;}
$ancho="900"; $alto="300";
$color="chco=00FF00|0000FF|FF0000|FF00FF|00FFFF|FFFF00";
$url="http://chart.apis.google.com/chart?cht=p3&chs=".$ancho."x".
$alto."&".$color;
$chd="chd=t:"; $chdl='chl=';
while(<>) {
chop($chdl); chop($chd);
print "$url&",$chdl,"&",$chd;
Grficas
Los 10 ficheros ms pesados, con su tamao
en Kb:
SELECT nombre,tamano/1000 FROM home ORDER BY tamano DESC
LIMIT 10;
my ($str) = @_;
return $str;
$ancho="900";$alto="300";
$rango_ejes="chxr=0,0,1,0.1|1,0,100,10";
$url="cht=lc&chs=".$ancho."x".$alto."&".$titulo."&".$rango_ejes;
$chd="chd=t:"; $chdl='chl=';
my $contador = 0;
while(<>) {
if ($contador++ % 10 == 0) { $chdl.=$fecha.'|'; }
chop($chdl); chop($chd);
print "$url&",$chdl,"&",$chd;
Grficas
Matamos el recolector de datos (Control+C)
Generamos la grfica
$ wget http://chart.apis.google.com/chart --post-data=$
(mysql -uroot graficas -e "SELECT MAX(uso) INTO @max
FROM usomemoria; SELECT hora,(uso/@max)*100 FROM
usomemoria" -s | perl uso-memoria.pl) --output-
document=graficamemoria.jpg
Grficas
Resultado
Grficas
Google Chart API tiene muchas ms opciones
Ms tipos de grficas
Ms de una serie de datos por grfica
Aadir y ajustar las leyendas
Aadir anotaciones a la grfica
Dibujar cuadrculas de referencia
...