Bienvenido(a) a Proyecto Script

Hola!!!

Este es un buen lugar donde buscar las respuestas a tus dudas sobre "Programación", "Lenguajes", "Linux", "Electrónica", etc.

Suele ser difícil buscar en la red y encontrar respuestas claras y en español a muchas preguntas sobre estos temas, así que aquí tienes un buen lugar para iniciar.

Quieres ser parte de esto, solo ¡regístrate!

miércoles, 1 de abril de 2009

Productos Cruzados en SQL

Los productos cruzados de conjuntos son muy útiles para hacer combinaciones de ellos principalmente, aquí tendremos un ejemplo para una forma de tabulación.

Supongamos que tenemos los datos de un alumno y queremos desplegar sus datos de forma que nos pueda ayudar a visualizarlos mejor, para eso nos gustaría saber cuanto es el total de sus parciales pero también el porcentaje del total de cada parcial. Imaginemos los siguientes datos:


Alumno, Parcial, Total, Porcentaje

Si quisieramos sacar estos datos, una forma de hacerlo es por medio de "producto cruzado" en tablas para eso podemos hacer un conteo de los parciales, hacer producto cruzado con los datos de los parciales y por último hacer una proyección más para hacer el cálculo del porcentaje.


   1 SELECT * FROM alumnos;


 id | nombre | parcial
======================
  1 | Balam  |    6
  2 | Balam  |    8
  3 | Balam  |    9
  4 | Balam  |    4
  5 | Balam  |    7
  6 | Balam  |    1

   1 SELECT *
   2 FROM alumnos,
   3 (
   4   SELECT
   5     SUM(parcial) AS CONTADOR
   6   FROM alumnos
   7 ) TOTAL;


 id | nombre | parcial | contador
=================================
  1 | Balam  |    6    |    35
  2 | Balam  |    8    |    35
  3 | Balam  |    9    |    35
  4 | Balam  |    4    |    35
  5 | Balam  |    7    |    35
  6 | Balam  |    1    |    35

   1 SELECT
   2   *,
   3   parcial/TOTAL.CONTADOR
   4 FROM alumnos,
   5 (
   6   SELECT
   7     SUM(parcial) AS CONTADOR
   8   FROM alumnos
   9 ) TOTAL;


 id | nombre | parcial | contador | porcentaje
==============================================
  1 | Balam  |    6    |    35    |    0.17
  2 | Balam  |    8    |    35    |    0.23
  3 | Balam  |    9    |    35    |    0.26
  4 | Balam  |    4    |    35    |    0.11
  5 | Balam  |    7    |    35    |    0.2
  6 | Balam  |    1    |    35    |    0.03