Control 7 María José Burgos Cabrera Administración de Base de Datos Instituto IACC 11-17/09/2018
PROBLEMA
En la empresa para la cual usted trabaja, se tomarán decisiones sobre la estructura organizacional por lo que requieren información sobre la distribución de los empleados y algunos datos con respecto a su salario. Suponga que existe una base de datos en MySQL, con la siguiente información: Una tabla de departamentos con las columnas de código y nombre. Adicionalmente se tiene la tabla de empleados con las columnas: código, nombre del empleado, fecha de nacimiento, renta líquida, código del departamento en el que trabaja. Realice la creación de las tablas mencionadas e incorpore la siguiente información, para la cual deberá asignar datos ficticios para los campos de código empleado, nombre del empleado, fecha de nacimiento (note que se le indica la cantidad de empleados a crear y sus respectivas rentas líquidas):
Se solicita que realice, en lenguaje SQL, las secuencias de comandos para lo siguiente: 1.- Configurar el modo de operación tradicional de forma global para la base de datos. 2.- Determinar el código de departamento, el nombre de departamento y el número de empleados del departamento con más empleados. 3.- Buscar el número máximo de empleados que hay en el departamento de ventas (código 08). 4.- Obtener la suma de salarios, el salario máximo y el salario mínimo por cada departamento.
DESARROLLO En primer lugar voy a crear una Base de datos para responder a los requerimientos que anteriormente me solicitan en el enunciado con los siguientes comandos: Create Database Control7 use control7
A continuación creo las nuevas tablas a utilizar, tabla Departamentos y Empleados, tener en cuenta que Empleados contiene departamentos, departamentos, por lo tanto lo agregaré con Foreing Key, además al código del empleado, se le agregará un auto increment, ya que el código del empleado es un dato único:
Ahora insertamos los registros a las tablas, según los datos indicados po r el docente:
Verifico que se insertaron los registros:
En primer lugar se inserté los datos de Departamentos, ya que esa tabla no contiene datos de referencia o campos de Foreing Key, tener en cuenta que no se insertara dentro del query el Código del Empleado, ya que es un dato automático. Ahora agregamos los datos de la tabla empleados:
Ahora mostraré el resultado del insert:
Ahora resolvemos los puntos indicados por el doc ente: 1.- Configurar el modo de operación tradicional de forma global para la base de datos. Le asignamos el modo “ANSI” ya que es el modo más utilizado y se utiliza utiliza para cumplir la cabalidad del estándar de SQL.
2.- Determinar el código de departamento, el nombre de departamento y el número de empleados del departamento con más empleados. Podemos saber el número máximo de empleados por cada departamento con el siguiente query:
Ahora necesito saber únicamente el departamento con más empleados, utilizamos el siguiente query:
A veces, cuando uno está realizando consultas a las tablas, sólo necesita una única fila. En estos casos debes solicitar a la base de datos un único resultado, o de lo contrario comprobará todos y cada uno de las coincidencias de la cláusula WHERE. En estos casos, añadir LIMIT 1 a tu query puede mejorar significativamente la velocidad. De esta forma la base de datos dejará de escanear resultados en el momento que encuentre uno, en lugar de recorrer toda la tabla o un índice.
En MySql no funciona el Top 1, por lo tanto se reemplaza por Limit 1, por las razones que anteriormente mencioné.
3.- Buscar el número máximo de empleados que hay en el departamento de ventas (código 08). Máximo empleado en 1 solo departamento “VENTAS”
Acá podemos saber el máximo de empleados por departamentos en general:
4.- Obtener la suma de salarios, el salario máximo y el salario mínimo por cada departamento. Individualmente:
Agrupo todos los Departamentos con un Group By, donde puedo saber un resumen completo de todos los departamentos con sus salarios:
Bibliografía Material semana 7. Videos de YouTube.