miércoles, 12 de octubre de 2011

Apuntes de la Unidad 2 de Matemáticas 5

En este apartado se encuentran los apuntes de la unidad 2 del curso de matemáticas 5 del Instituto Tecnológico de Toluca.

El examen de la segunda unidad abarca hasta donde aparece una nota dentro de los apuntes. Si existe alguna aclaración respecto a la legibilidad de éstos, no duden en comentarla.

Descargar apuntes dando click derecho y luego "Guardar como".

domingo, 2 de octubre de 2011

SQL Sakila: rentas por día

Nota: Para seguir mejor este ejemplo y ejecutar las consultas, les recomiendo seguir las instrucciones para configurar el ambiente de trabajo en la parte 1 del tutorial de SQL. Además, en el siguiente enlace pueden ver el modelo de Sakila versión 0.8.

En este ejemplo continuaremos usando la base de datos Sakila. El objetivo es obtener el promedio de rentas por día de la semana. Esto puede ser útil para lanzar una promoción en el día con menos rentas (por ejemplo: martes de 2x1).

Usaremos la tabla rental que tiene un registro por cada renta realizada. El campo que nos interesa es rental_date que es de tipo fecha (datetime). Primero, tenemos que obtener el día de la semana para esa fecha, es decir, a partir de “3 de Julio de 2011” debemos obtener “Domingo”. La función WEEKDAY es justo lo que necesitamos, retorna 0 para lunes, 1 para martes, ... 6 para domingo. La siguiente consulta retorna el día de la semana cuando se realizó la renta.

SELECT WEEKDAY(rental_date) AS wday FROM rental;

Ahora, todo lo que tenemos que hacer es agrupar y contar las ocurrencias para cada día de la semana.

mysql> select weekday(rental_date) as wday, count(*)
    -> from rental
    -> group by weekday(rental_date);

Noten que en la cláusula group by podemos usar el resultado de una función, en este caso weekday. La siguiente imagen muestra el resultado.

Podemos observar, que jueves es cuando se han realizado menos rentas en total con 2200. Noten que obtuvimos el total de rentas, pero ¿cómo podemos obtener el promedio por día? En otras palabras, hasta el momento sabemos que de todos los jueves en la tabla hay un total de 2200 rentas, pero no sabemos cuántas películas se rentan por jueves (por ejemplo, en un jueves se rentan normalmente 70 películas).

Recordemos que la tabla rental tiene una renta por registro. Lo primero que tenemos que hacer es agrupar las retas por día, es decir, una consulta que nos permita obtener: el 17 de Julio se realizaron 45 rentas. Sin embargo, un simple group by rental_date no funciona ya que rental_date contiene fecha y hora (dos rentas en el mismo día pero a diferente hora no serían agrupadas en el mismo día). Para ello utilizaremos la función DATE() que nos permite extraer sólo la fecha. La siguiente consulta agrupa por fecha.

mysql> select date(rental_date) as solo_fecha, count(*) as rentas 
    -> from rental 
    -> group by solo_fecha;

Ahora podemos agrupar por día de la semana y obtener un promedio. Además del promedio, también desplegamos el número de días y el total (es decir, el promedio por día x número de días, éste debe ser igual al total que obtuvimos en la primer consulta).

mysql> select weekday(solo_fecha) as wday, 
    ->        avg(rentas), count(*) as ndias, 
    ->        avg(rentas) * count(*) as total 
    -> from ( 
    -> select date(rental_date) as solo_fecha, count(*) as rentas 
    -> from rental 
    -> group by solo_fecha 
    -> ) agrupado_por_dia 
    -> group by wday;

La siguiente imagen muestra el resultado de la consulta.

En la primer consulta obtuvimos que el día con menos rentas en total era jueves; sin embargo, con esta consulta vemos que en promedio se rentan menos películas los martes. Esto se debe a que en la base de datos hay más días martes en comparación con el resto de los días.

Como pueden ver es posible manipular los datos de la base de diferentes formas para tener varias perspectivas de la misma información. Además existen muchas funciones predeterminadas que nos ayudan a transformar los datos, en este post vimos 2 funciones para la manipulación de fechas (DATE y WEEKDAY).

Compartan sus consultas favoritas de la BD Sakila o describan alguna consulta que les gustaría que explicáramos en un post.

sábado, 24 de septiembre de 2011

Ejercicios de Matemáticas V (Parte 2)

En este post podrán descargar la segunda parte de los ejercicios de Matemáticas 5 del Instituto Tecnológico de Toluca, semestre Agosto-Diciembre de 2011.

Estos ejercicios son los 4 problemas de aplicación que la profesora dictó el viernes pasado. Simplemente da click sobre el enlace que se presenta a continuación.

Descargar Ejercicios: problemas de aplicación

domingo, 18 de septiembre de 2011

Videos y tutoriales para comenzar a programar el PIC 16F628A

A continuación se encuentra una serie de videos que encontré y que pueden ser muy útiles en la programación del PIC 16F628A, que es el que actualmente utilizamos en el curso de Arquitectura de Computadoras. Quizá alguno de ellos parezca demasiado sencillo e introductorio para quienes ya cuentan con un poco de experiencia, pero para los que aún somos neófitos en este tema, pueden ser de gran ayuda.

Estos son también tutoriales acerca de cómo utilizar MPLAB, la herramienta que manejaremos a la hora de programar el PIC. Por supuesto existen muchos más videos, así que si tienen alguna sugerencia será bienvenida.

Ejercicios Matemáticas V (Parte 1)

En el siguiente enlace pueden descargar la primera parte de los ejercicios de Matemáticas V (Ecuaciones Diferenciales). De acuerdo con la profesora, solamente faltan 2 temas por anexar pero podemos ir resolviendo los que se encuentran en esta primera parte.

Descargar ejercicios

domingo, 11 de septiembre de 2011

Diagrama Sakila DB

En septiembre del año pasado inicié una serie de SQL y posteriormente publiqué un par de posts describiendo cómo formular ciertas consultas (trivia sql y filtrar por columnas resultado de agrupado)

En el primer post de la serie de SQL, también proporcioné un enlace a un diagrama de la base de datos para tener mayor referencia al crear las consultas. Sin embargo, mientras preparaba un nuevo post, noté algo raro en el diagrama.

El archivo zip de sakila contiene tres archivos: uno con comandos para crear la base de datos, otro para poblarla y el último es un archivo del modelo de base de datos que se puede abrir con MySQL Workbench.

Hasta el momento no había usado el modelo de Workbench, pero al ver que las relaciones del diagrama parecían invertidas, decidí instalar MySQL Workbench y abrir el modelo. Esto me permitió corroborar que las relaciones del diagrama que se encuentra en la página principal de Sakila están invertidas.

Observen las siguientes dos imágenes. La primera es el diagrama en la página principal de Sakila: los símbolos de 'muchos' no están del lado de film_actor. La segunda es una imagen del modelo de Workbench: los símbolos de 'muchos' sí están del lado de film_actor.

Diagrama Página Sakila

Diagrama Workbench

Así que recomendaría mejor usar el modelo de Workbench (también subí la siguiente imagen del modelo de Sakila versión 0.8).

Ahora sí podemos hablar de la siguiente consulta en el próximo post.

sábado, 27 de agosto de 2011

LibreOffice corrección ortográfica

En enero hablamos sobre LibreOffice como una alternativa a OpenOffice. Con el lanzamiento de Ubuntu 11.04, LibreOffice se convirtió en la suite de productividad oficial de Ubuntu. De hecho cuando actualicé a 11.04, OpenOffice fue desinstalado y LibreOffice ocupó su lugar.

Sin embargo, noté que no tenía instalada la revisión ortográfica en español. Afortunadamente es muy fácil agregar esta funcionalidad. Primero debemos abrir el administrador de paquetes (system > administration > synaptic package manager) y en el recuadro de búsqueda teclear myspell-es. Asegúrate de tener cerrada cualquier instancia de LibreOffice e instala el paquete myspell-es.

Ahora abre alguna instancia de LibreOffice como Writer, pon el lenguaje en Spanish (México) y teclea una sentencia en español para verificar si funciona el paquete. En caso de que no aparezca el lenguaje deseado, selecciona la opción more para tener más opciones.

Como podemos observar en la siguiente imagen, la revisión y corrección ortográfica está funcionando adecuadamente.

Si tienes más tips para mejorar la funcionalidad de LibreOffice, compártelos en los comentarios.