Ejercicios SQL Empresa

Documentos relacionados
Ejercicios SQL Empresa

GUIA DE EJERCICIOS PARA RESOLVER: SQL

Qué es una subconsulta?.

PRACTICA DE SQL. Se dispone de las tablas EMPLE y DEPART que contienen los siguientes datos.

PARTE I LENGUAJE SQL. GESTION DE DATOS

Las soluciones de las consultas vistas en clase se encuentran en la página 5 en adelante.

Capítulo 4. Realización de consultas

Agrupamiento de registros. Elaboración de claúsulas avanzadas de selección. 31/12/2011. Unidad 9

Tema 7. Elaboración de consultas básicas de selección. Lenguajes de bases de datos. SQL básico 15/12/2011

Lenguaje SQL Página 1 -PARTE I-...3 TEMA 1. EL LENGUAJE SQL Y LOS SISTEMAS DE GESTIÓN DE BASES DE DATOS...3. El lenguaje S.Q.L...3

LENGUAJE DE MANIPULACIÓN DE DATOS (DML) CONSULTA DE DATOS

UNIDAD 1.- PARTE 1 MANIPULACIÓN AVANZADA DE DATOS CON SQL. BASES DE DATOS PARA APLICACIONES. Xochitl Clemente Parra Armando Méndez Morales

Operaciones con bases de

SELECT listadecampos FROM nombredetablas WHERE condicionesdebúsqueda;

Base de Datos. Docente: Ing. Francisco Rodríguez BASE DATOS. Resultados. Internet. Requerimientos

SQL Básico. José Muñoz Jimeno Febrero 2015

PRESENTACION SQL SENTENCIAS SQL 5TO SEMESTRE DE INGENIERIA PROFESOR INGENIERO EDGAR SANDOVAL

SQL 3º L.A.D.E. SQL - 1 -

Lenguaje SQL - Ejercicios

Guía de ejercicios de SQL Prof. Mauricio E. Fernández N. Semestre Agosto-Diciembre de 2012

VISUALIZACIÓN DE DATOS A PARTIR DE VARIAS TABLAS

INFORMÁTICA MÉDICA. Profesor: MsC. Liz Armenteros Chávez

Funciones agregadas. Funciones agregadas: COUNT

LENGUAJE DE CONSULTA ESTRUCTURADO (SQL)

Tutorial de SQL - El comando SELECT

2. Distinguir entre los comandos SQL*Plus y las sentencias SQL. 3. Consultar la estructura de una tabla, por ejemplo emp.

Informática Básica Práctica Tema 3 Ejercicios de SQL

Restricción y Clasificación de los Datos. Copyright Oracle Corporation, All rights reserved.

SQL. Lenguaje de Consulta Estructurado. Curso básico de SQL (Leire Urcola Carrera)

Lenguaje de manipulación de datos

Access SQL: DDL y DML. Una empresa de Ingeniería precisa una base de datos para la gestión de sus proyectos.

Conceptos Avanzados de Programación en Internet

Introducción. Definición. Definición 17/12/2011. Unidad 7 Elaboración de consultas básicas de selección.

Ejemplo de gestión de datos con SQL

1. DML. Las consultas de resumen

SELECT SELECT WHERE WHERE GROUP BY

Union, Intersect, Minus

Consultas a la BD usando SELECT-SQL. Sintaxis : alias1.campo1,alias3.campo3 tabla1 alias1,tabla2 alias2,tabla3 alias3. alias1.campo2 = alias2.

Nombre: Se debe entregar esta hoja

SQL, Consultas. Son Importantes las Consultas? Cuál es el Resultado de SELECT? Andrés Moreno S.

Manual de Sentencias Básicas en SQL

Base de Datos. Docente: Ing. Francisco Rodríguez BASE DATOS. Resultados. Internet. Requerimientos

2. Obtener el valor absoluto del SALARIO para todas las filas de la tabla EMPLE

Bases de Datos Ejercicios de SQL

La forma básica de la instrucción SELECT consta de tres cláusulas SELECT, FROM y WHERE (donde)

Curso de SQL. Nivel básico

MÓDULO 1: ORGANIZACIÓN Y ESTRUCTURA DE LA INFORMACIÓN. Tema 3: Interrogación y explotación de datos. Leire Aldaz, Begoña Eguía y Leire Urcola

1. Dadas las tablas ALUM y NUEVOS, insertar en la tabla ALUM los nuevos alumnos.

Ejercicios prácticos con Excel.

SQL. Carlos A. Olarte BDI

SQL. Amparo López Gaona. México, D.F. Noviembre 2003

Datos Agregados por medio de Funciones de Grupo. Copyright Oracle Corporation, All rights reserved.

Microsoft Excel Clase 1 Versión Impresa. Tema 1 Introducción

Boletín de Problemas de la Asignatura II18 Bases de Datos. Ingeniería Informática Universitat Jaume I

Unidad 7. CONSULTAS MULTITABLA

Insertar Datos en Tablas

LENGUAJE DE CONSULTA ESTRUCTURADO - SQL CONTENIDO

Consultas SQL INNER JOIN

2. Calcula cuanto ganan en total cada uno de los grupos de empleados clasificados por tipo de trabajo (Job_id)

SQL SERVER Curso Teórico-Práctico

Lenguaje SQL Página 1 -PARTE III-...3 TEMA 8. CREACIÓN DE VISTAS:...3. Vistas: qué son y para qué sirven?...3. Creación de vistas...

ÍNDICE. Introducción... Capítulo 1. Características, instalación, inicio y entorno de trabajo... 1

Introducción 1 Recuperación de Datos mediante la Sentencia SQL SELECT

FUNCIONES EN SQL SERVER

El lenguaje SQL es un lenguaje estándar para el acceso y

1. DML. Las consultas multitabla

Ficheros y Bases de Datos Curso Primer Parcial. 7 de FEBRERO de Nombre:

EXISTS y NOT EXISTS. Empleados que no trabajan en el proyecto 527.

Tema 4. Manipulación de datos con SQL

Taller SQL - SUP. Introducción al Lenguaje SQL. Claúsula Where. Sentencia Select Sentencia Insert Sentencia Update Sentencia Delete

SQL. Álgebra Relacional Selección y proyección Operaciones sobre conjuntos: unión, intersección, diferencia, producto Reunión natural

CASE expresion WHEN valor1 THEN resultado1 ELSE resultadon END CASE WHEN verdadero THEN resultado1 ELSE resultado2 END

Nombre: 1. Selecciona todos los registros de la tabla EMPLOYEES. Anota el nº de filas obtenidas.

Lenguaje de consulta de datos SELECT PARTE 2

Bases de Datos 1. Teórico: Structured Query Language

Ejercicios Resueltos de SQL

o SUM: suma los valores del campo que especifiquemos. Sólo se puede utilizar en columnas numéricas.

Operador Restricción

6.1 Introducción. Fund. Bases de Datos Ing. Felipe Alanís González -ITD- 1

Práctica Obtener el código y el doble del precio de los artículos cuyo precio es inferior a 5 céntimos de euro.

Procedimientos para agrupar y resumir datos

UNIDAD DE TRABAJO 2: BASES DE DATOS RELACIONALES

SUBCONSULTAS SQL. Cuando se ejecuta una consulta que contiene una subconsulta, la subconsulta se ejecuta por cada fila de la consulta principal.

SQL. Comandos DDL. Comandos DML

Bases de Datos Geográficos

Dependiendo de las tareas, podemos clasificar las sentencias SQL en dos tipos:

MANUAL BÁSICO DEL LENGUAJE SQL

SQL: Consultas Avanzadas. Bases de Datos

TRANSACT-SQL, DISEÑO Y PROGRAMACIÓN DE BASES DE DATOS EN SQL SERVER 2008

Unidad III: Lenguaje de manipulación de datos (DML) 3.1 Inserción, eliminación y modificación de registros

El lenguaje SQL III: Creación de bases de datos y seguridad. Introducción

TEMA 4.. CONSULTA DE DATOS I.

Transcripción:

Ejercicios SQL Empresa La siguiente base de datos almacena información sobre los empleados, clientes, productos, pedidos y departamentos de una empresa: CLIENTES (cliente_no, nombre, localidad, vendedor_no*, debe, haber, limite_credito) EMPLEADOS (emp_no, apellido, oficio, director*, fecha_alta, salario, comision*, dep_no) PRODUCTOS (producto_no, descripción, precio_actual, stock_disponible) PEDIDOS (pedido_no, producto_no, cliente_no, unidades, fecha_pedido) DEPARTAMENTOS (dep_no, dnombre, localidad) La clave primaria de cada relación está formada por los atributos que aparecen subrayados. La información que contienen las relaciones anteriores se describe a continuación: La relación EMPLEADOS almacena la información referente a los empleados de la empresa: número de empleado (emp_no), apellido (apellido), función que desempeñan en la empresa (oficio), código de su director(director), fecha de alta en la empresa (fecha_alta), sueldo (salario), comisiones (comisión) y número del departamento al que pertencen (dep_no). Esta tabla está relacionada con DEPARTAMENTOS a través del atributo dep_no (número de departamento), y también está relacionada consigo misma mediante los atributos emp_no y director. La relación DEPARTAMENTO almacena los datos sobre los departamentos de que consta la empresa: número de departamento (dep_no), nombre (nombre) y localidad en que se encuentra (localidad). La relación CLIENTES almacena los datos de los clientes: número de cliente (cliente_no), nombre (nombre), localidad (localidad), vendedor asignado al cliente (vendedor_no), el debe, el haber y el límite de crédito para ese cliente (debe, haber, limite_credito). Esta tabla se relaciona con EMPLEADOS por medio del atributo vendedor_no que hace referencia al atributo emp_no en EMPLEADOS. La relación PRODUCTOS almacena los datos de los clientes: número de producto (producto_no), descripción del producto (descripción), precio actual (precio_actual), y stock disponible del producto (stock_disponible). La relación PEDIDOS almacena información referente a los pedidos realizados por los clientes: número de pedido (pedido_no), número de producto (producto_no), código del cliente que ha realizado el pedido (cliente_no), unidades (unidades), y fecha en que se efectuó el pedido (fecha_pedido). Esta tabla está relacionada con PRODUCTOS mediante el atributo producto_no y con CLIENTES mediante el atributo cliente_no. Las claves ajenas se muestran a continuación: CLIENTES vendedor_no EMPLEADOS EMPLEADOS director EMPLEADOS B : N ; M : C B : N ; M : C EMPLEADOS dep_no DEPARTAMENTO PEDIDOS producto_no PRODUCTOS B : C ; M : C B : C ; M : C PEDIDOS cliente_no B : C ; M : C CLIENTES 1

CLIENTES cliente_no nombre localidad vendedor_no debe haber limite_credito 101 DISTRIBUCIONES GOMEZ MADRID 7499 0 0 5000 102 LOGITRONICA S.L. BARCELONA 7654 0 0 5000 103 INDUSTRIAS LACTEAS S.A. LAS ROZAS 7844 0 0 10000 104 TALLERES ESTESO S.A. SEVILLA 7654 0 0 5000 105 EDICIONES SANZ BARCELONA 7499 0 0 5000 106 SIGNOLOGIC S.A. MADRID 7654 0 0 5000 107 MARTIN Y ASOCIADOS S.L. ARAVACA 7844 0 0 10000 108 MANUFACTURAS ALI S.A. SEVILLA 7654 0 0 5000 DEPARTAMENTOS dep_no dnombre localidad 10 CONTABILIDAD BARCELONA 20 INVESTIGACION VALENCIA 30 VENTAS MADRID 40 PRODUCCION SEVILLA PRODUCTOS producto_no descripción precio_actual stock_disponible 10 MESA DESPACHO MOD. GAVIOTA 550 50 20 SILLA DIRECTOR MOD. BUFALO 670 25 30 ARMARIO NOGAL DOS PUERTAS 460 20 40 MESA MODELO UNIÓN 340 15 50 ARCHIVADOR CEREZO 1050 20 60 CAJA SEGURIDAD MOD. B222 280 15 70 DESTRUCTORA PAPEL A3 450 25 80 MODULO ORDENADOR MOD. ERGOS 550 25 EMPLEADOS emp_no apellido oficio director fecha_alta salario comision dep_no 7499 ALONSO VENDEDOR 7698 20/02/1991 1400 400 30 7521 LOPEZ EMPLEADO 7782 08/05/1991 1350 10 7654 MARTIN VENDEDOR 7698 30/12/1991 1500 1600 30 7698 GARRIDO DIRECTOR 7839 01/05/1991 3850 30 7782 MARTINEZ DIRECTOR 7839 09/06/1991 2450 10 7839 REY PRESIDENTE 17/11/1991 6000 10 7844 CALVO VENDEDOR 7698 08/09/1991 1800 0 30 7876 GIL ANALISTA 7782 06/05/1992 3350 20 7900 JIMENEZ EMPLEADO 7782 24/03/1993 1400 20 8998 CORTES VENDEDOR 7698 20/02/2009 1800 30 PEDIDOS pedido_no producto_no cliente_no unidades fecha_pedido 1000 20 103 3 06/10/2009 1001 50 106 2 06/10/2009 1002 10 101 4 07/10/2009 1003 20 105 4 16/10/2009 1004 40 106 8 20/10/2009 1005 30 105 2 20/10/2009 1006 70 103 3 03/11/2009 1007 50 101 2 06/11/2009 1008 10 106 6 16/11/2009 1009 20 105 2 26/11/2009 1010 40 102 3 08/12/2009 1011 30 106 2 15/12/2009 1012 10 105 3 06/12/2009 1013 30 106 2 06/12/2009 1014 20 101 4 07/01/2010 1015 70 105 4 16/01/2010 1016 30 106 7 18/01/2010 1017 20 105 6 20/01/2010 2

Resuelve las siguientes consultas en SQL: 1. Apellido y sueldo incrementado un 10% de los empleados con oficio de vendedor. 2. Apellido, salario, sueldo, comisión y total a cobrar por cada empleado, suponiendo que se trata de sumar su salario a la correspondiente comisión, si la tuviera. 3. Datos de todos aquellos empleados cuya comisión sea nula. 4. Datos de los empleados con oficio de vendedor y salario entre 1750 y 2000. 5. Datos de los empleados cuyo oficio no sea el de vendedor, cuyo apellido comience por G y que tengan un sueldo superior a 2500. 6. Seleccionar los empleados existentes en los departamentos 10 y 30. Mostrar su número de empleado, su apellido, y el número del departamento. 7. Listar los empleados por departamentos en orden descendente de salarios. Mostrar el número de departamento, el apellido y el salario. 8. Obtener los salarios máximo, mínimo y la diferencia existente entre ambos. 9. Calcular el salario medio de los empleados. 10. Obtener los salarios medios por departamento. 11. Obtener cuántos empleados hay en cada departamento. 12. Seleccionar el mayor salario dentro de cada oficio, excluyendo el del presidente. 13. Seleccionar los oficios que tengan dos o más empleados. 14. Seleccionar los oficios que tengan dos o más empleados, cuyo salario supere los 1400. 15. Obtener todos los empleados (indicando nº empleado y apellido) con su nombre de departamento y su localidad. 16. Obtener la lista de los empleados con los nombres de sus directores. 17. Obtener los jefes de los empleados cuyo oficio sea el de VENDEDOR. 18. Listar los empleados de los departamentos diferentes al de VENTAS. 19. Listar los empleados cuyo salario supere el salario medio. Mostrar su número de departamento, apellido y salario. 20. Mostrar el apellido y número de todos los empleado que tienen el mismo oficio que Alonso. 21. Obtener información de los empleados que ganan más que cualquier empleado del departamento 30. 22. Visualizar el número de vendedores del departamento de VENTAS. 23. Visualizar la suma de los salarios para cada oficio de los empleados del departamento de VENTAS. 24. Listar, en orden alfabético, aquellos empleados que no trabajen ni en Madrid ni en Barcelona. 25. Listar los nombres de los departamentos que tengan algún empleado con fecha de alta anterior a 1992. 26. Obtener los departamentos y sus nombres, siempre que haya más de un empleado trabajando en ellos. 27. Listar las localidades donde existan departamentos con empleados cuya comisión supere el 10% del salario. 28. Seleccionar aquellos departamentos en los que al menos exista un empleado con comisión. 29. Listar aquellos departamentos en los que todos sus empleados carezcan de información sobre su comisión. 30. Obtener apellido y oficio de los empleados que tienen el mismo oficio y mismo número de departamento que el de INVESTIGACIÓN. 31. Visualizar el número de departamento con más empleados. 32. Visualizar los números de departamentos en los que el salario medio de sus empleados sea mayor o igual que la media de todos los salarios. 33. Visualizar el departamento con más presupuesto asignado para pagar el salario y la comisión de sus empleados. 34. Visualizar el número de departamento, el oficio y el salario de los oficios con mayor salario de cada departamento. 3

Enunciados de las consultas SQL y resultados: 1. Apellido y sueldo incrementado un 10% de los empleados con oficio de vendedor. apellido Salario_incrementado ALONSO 1540 MARTIN 1650 CALVO 1980 CORTES 1980 2. Apellido, salario, sueldo, comisión y total a cobrar por cada empleado, suponiendo que se trata de sumar su salario a la correspondiente comisión, si la tuviera. apellido salario comision Importe Total ALONSO 1400 400 1800 LOPEZ 1350 1350 MARTIN 1500 1600 3100 GARRIDO 3850 3850 MARTINEZ 2450 2450 REY 6000 6000 CALVO 1800 0 1800 GIL 3350 3350 JIMENEZ 1400 1400 CORTES 1800 1800 3. Datos de todos aquellos empleados cuya comisión sea nula. emp_no apellido oficio director fecha_alta salario comision dep_no 7521 LOPEZ EMPLEADO 7782 08/05/91 1350 10 7698 GARRIDO DIRECTOR 7839 01/05/91 3850 30 7782 MARTINEZ DIRECTOR 7839 09/06/91 2450 10 7839 REY PRESIDENTE 17/11/91 6000 10 7876 GIL ANALISTA 7782 06/05/92 3350 20 7900 JIMENEZ EMPLEADO 7782 24/03/93 1400 20 8998 CORTES VENDEDOR 7698 20/02/09 1800 30 4. Datos de los empleados con oficio de vendedor y salario entre 1750 y 2000. emp_no apellido oficio director fecha_alta salario comision dep_no 7844 CALVO VENDEDOR 7698 08/09/91 1800 0 30 8998 CORTES VENDEDOR 7698 20/02/09 1800 30 5. Datos de los empleados cuyo oficio no sea el de vendedor, cuyo apellido comience por G y que tengan un sueldo superior a 2500. emp_no apellido oficio director fecha_alta salario comision dep_no 7698 GARRIDO DIRECTOR 7839 01/05/91 3850 30 7876 GIL ANALISTA 7782 06/05/92 3350 20 6. Seleccionar los empleados existentes en los departamentos 10 y 30. Mostrar su número de empleado, su apellido, y el número del departamento. NºEmpleado apellido departamento 7499 ALONSO 30 7521 LOPEZ 10 7654 MARTIN 30 7698 GARRIDO 30 7782 MARTINEZ 10 7839 REY 10 7844 CALVO 30 8998 CORTES 30 7. Listar los empleados por departamentos en orden descendente de salarios. Mostrar el número de departamento, el apellido y el salario. dpto apellido salario 10 REY 6000 10 MARTINEZ 2450 10 LOPEZ 1350 20 GIL 3350 20 JIMENEZ 1400 30 GARRIDO 3850 30 CORTES 1800 30 CALVO 1800 30 MARTIN 1500 30 ALONSO 1400 4

8. Obtener los salarios máximo, mínimo y la diferencia existente entre ambos. maximo minimo diferencia 6000 1350 4650 9. Calcular el salario medio de los empleados. Salario Medio 2490 10. Obtener los salarios medios por departamento. 11. Obtener cuántos empleados hay en cada departamento. Dpto SalarioDpto 30 2070 10 3266,67 20 2375 Dpto Empleados 30 5 10 3 20 2 12. Seleccionar el mayor salario dentro de cada oficio, excluyendo el del presidente. oficio Mayor Salario Oficio VENDEDOR 1800 EMPLEADO 1400 DIRECTOR 3850 ANALISTA 3350 13. Seleccionar los oficios que tengan dos o más empleados. oficio empleados VENDEDOR 4 EMPLEADO 2 DIRECTOR 2 14. Seleccionar los oficios que tengan dos o más empleados, cuyo salario supere los 1400. oficio empleados VENDEDOR 3 DIRECTOR 2 15. Obtener todos los empleados (indicando nº empleado y apellido) con su nombre de departamento y su localidad. emp_no apellido dnombre localidad 7499 ALONSO VENTAS MADRID 7521 LOPEZ CONTABILIDAD BARCELONA 7654 MARTIN VENTAS MADRID 7698 GARRIDO VENTAS MADRID 7782 MARTINEZ CONTABILIDAD BARCELONA 7839 REY CONTABILIDAD BARCELONA 7844 CALVO VENTAS MADRID 7876 GIL INVESTIGACION VALENCIA 7900 JIMENEZ INVESTIGACION VALENCIA 8998 CORTES VENTAS MADRID 16. Obtener la lista de los empleados con los nombres de sus directores. NºEmpleado apellido NºDirector NombreDirector 7499 ALONSO 7698 GARRIDO 7521 LOPEZ 7782 MARTINEZ 7654 MARTIN 7698 GARRIDO 7698 GARRIDO 7839 REY 7782 MARTINEZ 7839 REY 7844 CALVO 7698 GARRIDO 7876 GIL 7782 MARTINEZ 7900 JIMENEZ 7782 MARTINEZ 8998 CORTES 7698 GARRIDO 5

17. Obtener los jefes de los empleados cuyo oficio sea el de VENDEDOR. NºEmpleado apellido NºDirector NombreDirector 7499 ALONSO 7698 GARRIDO 7654 MARTIN 7698 GARRIDO 7844 CALVO 7698 GARRIDO 8998 CORTES 7698 GARRIDO 18. Listar los empleados de los departamentos diferentes al de VENTAS. NºEmpleado apellido 7521 LOPEZ 7782 MARTINEZ 7839 REY 7876 GIL 7900 JIMENEZ 19. Listar los empleados cuyo salario supere el salario medio. Mostrar su número de departamento, apellido y salario. Nºdpto apellido salario 30 GARRIDO 3850 10 REY 6000 20 GIL 3350 20. Mostrar el apellido y número de todos los empleado que tienen el mismo oficio que Alonso. Nºempleado apellido oficio 7499 ALONSO VENDEDOR 7654 MARTIN VENDEDOR 7844 CALVO VENDEDOR 8998 CORTES VENDEDOR 21. Obtener información de los empleados que ganan más que cualquier empleado del departamento 30. 22. Visualizar el número de vendedores del departamento de VENTAS. Nºempleado apellido oficio salario 7839 REY PRESIDENTE 6000 Nº Vendedores 4 23. Visualizar la suma de los salarios para cada oficio de los empleados del departamento de VENTAS. 24. Listar, en orden alfabético, aquellos empleados que no trabajen ni en Madrid ni en Barcelona. oficio TotalSalarios VENDEDOR 6500 DIRECTOR 3850 Nºempleado apellido NºDpto oficio 7876 GIL 20 ANALISTA 7900 JIMENEZ 20 EMPLEADO 25. Listar los nombres de los departamentos que tengan algún empleado con fecha de alta anterior a 1992. dnombre CONTABILIDAD VENTAS 26. Obtener los departamentos y sus nombres, siempre que haya más de un empleado trabajando en ellos. dep_no dnombre 10 CONTABILIDAD 20 INVESTIGACION 30 VENTAS 6

27. Listar las localidades donde existan departamentos con empleados cuya comisión supere el 10% del salario. localidad MADRID 28. Seleccionar aquellos departamentos en los que al menos exista un empleado con comisión. dep_no dnombre localidad 30 VENTAS MADRID 29. Listar aquellos departamentos en los que todos sus empleados carezcan de información sobre su comisión. 30. Obtener apellido y oficio de los empleados que tienen el mismo oficio y mismo número de departamento que el de INVESTIGACIÓN. NºDpto Departamento 10 CONTABILIDAD 20 INVESTIGACION 40 PRODUCCION apellido LOPEZ GIL JIMENEZ oficio EMPLEADO ANALISTA EMPLEADO 31. Visualizar el número de departamento con más empleados. NºDpto TotalEmpleados 30 5 32. Visualizar los números de departamentos en los que el salario medio de sus empleados sea mayor o igual que la media de todos los salarios. NºDpto 10 33. Visualizar el departamento con más presupuesto asignado para pagar el salario y la comisión de sus empleados. NºDpto 30 34. Visualizar el número de departamento, el oficio y el salario de los oficios con mayor salario de cada departamento. dep_no oficio salario 30 DIRECTOR 3850 10 PRESIDENTE 6000 20 ANALISTA 3350 7

Soluciones a las consultas SQL 1. Apellido y sueldo incrementado un 10% de los empleados con oficio de vendedor. (4 filas) SELECT apellido, salario+salario*0.1 AS Salario incrementado WHERE oficio='vendedor' 2. Apellido, salario, sueldo, comisión y total a cobrar por cada empleado, suponiendo que se trata de sumar su salario a la correspondiente comisión, si la tuviera. Incorrecta: SELECT apellido, salario, comision, salario+comision AS Importe Total Nota: Cualquier expresión aritmética que contenga algún valor nulo, retornará un valor nulo. Usaremos la función NVL (en MS-Access, NZ) que transforma la ausencia de información al valor que se le especifique. Correcta: SELECT apellido, salario, comision, salario+nvl(comision,0) AS Importe Total 3. Datos de todos aquellos empleados cuya comisión sea nula. (7 filas) SELECT * WHERE comision IS NULL 4. Datos de los empleados con oficio de vendedor y salario entre 1750 y 2000. (2 filas) SELECT * WHERE oficio='vendedor' AND salario BETWEEN 1750 AND 2000 5. Datos de los empleados cuyo oficio no sea el de vendedor, cuyo apellido comience por G y que tengan un sueldo superior a 2500. (3 filas) SELECT * WHERE NOT oficio='vendedor' AND apellido LIKE 'G*' AND salario > 2500 6. Seleccionar los empleados existentes en los departamentos 10 y 30. Mostrar su número de empleado, su apellido, y el número del departamento. Una forma: O también: (8 filas) SELECT emp_no AS NºEmpleado, apellido, dep_no AS departamento WHERE dep_no IN (10,30) SELECT emp_no AS NºEmpleado, apellido, dep_no AS departamento WHERE dep_no=10 OR dep_no=30 8

7. Listar los empleados por departamentos en orden descendente de salarios. Mostrar el número de departamento, el apellido y el salario. SELECT dep_no AS dpto, apellido, salario ORDER BY dep_no, salario DESC 8. Obtener los salarios máximo, mínimo y la diferencia existente entre ambos. SELECT MAX(salario) AS maximo, MIN(salario) AS minimo, MAX(salario)-MIN(salario) AS diferencia 9. Calcular el salario medio de los empleados. SELECT AVG(salario) AS "Salario Medio" 10. Obtener los salarios medios por departamento. SELECT dep_no AS Dpto, AVG(salario) AS SalarioDpto 11. Obtener cuántos empleados hay en cada departamento. SELECT dep_no AS Dpto, COUNT(*) AS Empleados 12. Seleccionar el mayor salario dentro de cada oficio, excluyendo el del presidente. SELECT oficio, MAX(salario) AS "Mayor Salario Oficio" WHERE oficio <> 'PRESIDENTE' 13. Seleccionar los oficios que tengan dos o más empleados. SELECT oficio, COUNT(*) AS empleados HAVING COUNT(*)>=2 14. Seleccionar los oficios que tengan dos o más empleados, cuyo salario supere las 1400. SELECT oficio, COUNT(*) AS empleados WHERE salario>1400 HAVING COUNT(*)>=2 15. Obtener todos los empleados (indicando su número de empleado y apellido) con su nombre de departamento y su localidad. SELECT emp_no, apellido, dnombre, localidad AS Em, DEPARTAMENTOS AS De WHERE Em.dep_no=De.dep_no 16. Obtener la lista de los empleados con los nombres de sus directores. 9

SELECT E1.emp_no AS NºEmpleado, E1.apellido, E1.director AS NºDirector, E2.apellido AS NombreDirector AS E1, EMPLEADOS AS E2 WHERE E1.director=E2.emp_no 17. Obtener los jefes de los empleados cuyo oficio sea el de VENDEDOR. SELECT E1.emp_no AS NºEmpleado, E1.apellido, E1.director AS NºDirector, E2.apellido AS NombreDirector AS E1, EMPLEADOS AS E2 WHERE E1.director=E2.emp_no AND E1.oficio='VENDEDOR' 18. Listar los empleados de los departamentos diferentes al de VENTAS. SELECT emp_no AS NºEmpleado, apellido AS Em, DEPARTAMENTOS AS De WHERE De.dnombre='VENTAS' AND Em.dep_no<>De.dep_no 19. Listar los empleados cuyo salario supere el salario medio. Mostrar su número de departamento, apellido y salario. SELECT dep_no AS Nºdpto, apellido, salario WHERE salario>(select AVG(salario) ) 20. Obtener todos los empleados que tienen el mismo oficio que Alonso. Mostrar su apellido y número de empleado. SELECT emp_no AS Nºempleado, apellido, oficio WHERE oficio = ( SELECT oficio WHERE apellido='alonso') 21. Obtener información de los empleados que ganan más que cualquier empleado del departamento 30. SELECT emp_no AS Nºempleado, apellido, oficio, salario WHERE salario> ( SELECT MAX(salario) WHERE dep_no=30) 22. Visualizar el número de vendedores del departamento de VENTAS. SELECT COUNT(*) AS Nºvendedores WHERE dep_no=( SELECT dep_no WHERE dnombre='ventas' ) AND oficio='vendedor' SELECT COUNT(*) AS Nºvendedores Em, DEPARTAMENTOS De WHERE De.dep_no = Em.dep_no AND dnombre='ventas' AND oficio='vendedor' 23. Visualizar la suma de los salarios para cada oficio de los empleados del departamento de VENTAS. SELECT oficio, SUM(salario) AS TotalSalarios WHERE dep_no = ( SELECT dep_no WHERE dnombre='ventas' ) SELECT oficio, SUM(salario) AS TotalSalarios AS Em, DEPARTAMENTOS AS De WHERE De.dep_no=Em.dep_no AND dnombre='ventas' 10

24. Listar, en orden alfabético, aquellos empleados que no trabajen ni en Madrid ni en Barcelona. SELECT emp_no AS Nºempleado, apellido, dep_no AS NºDpto, oficio WHERE dep_no IN ( SELECT dep_no WHERE localidad NOT IN ('BARCELONA','MADRID')) SELECT emp_no AS Nºempleado,apellido, Em.dep_no AS NºDpto, oficio Em, DEPARTAMENTOS De WHERE Em.dep_no=De.dep_no AND localidad NOT IN ('BARCELONA','MADRID') 25. Listar los nombres de los departamentos que tengan algún empleado con fecha de alta anterior a 1992. SELECT dnombre WHERE dep_no IN ( SELECT dep_no WHERE year(fecha_alta)<1992 ) SELECT DISTINCT dnombre De, EMPLEADOS Em WHERE De.dep_no=Em.dep_no AND year(fecha_alta)<1992 26. Obtener los departamentos y sus nombres, siempre que haya más de un empleado trabajando en ellos. SELECT dep_no, dnombre WHERE dep_no IN ( SELECT dep_no HAVING COUNT(*)>1 ) SELECT De.dep_no, dnombre De, EMPLEADOS Em WHERE Em.dep_no=De.dep_no GROUP BY De.dep_no, dnombre HAVING COUNT(*)>1 27. Listar las localidades donde existan departamentos con empleados cuya comisión supere el 10% del salario. SELECT localidad WHERE dep_no IN ( SELECT dep_no WHERE comision>0.1*salario ) 28. Seleccionar aquellos departamentos en los que al menos exista un empleado con comisión. SELECT * WHERE dep_no IN (SELECT dep_no WHERE comision>0) Tb. Podríamos haber utilizado =ANY en lugar de IN 29. Listar aquellos departamentos en los que todos sus empleados carezcan de información sobre su comisión. SELECT dep_no AS NºDpto, dnombre AS Departamento WHERE dep_no <> ALL ( SELECT dep_no WHERE comision IS NOT NULL) 30. Obtener apellido y oficio de los empleados que tienen el mismo oficio y mismo número de departamento que el de INVESTIGACIÓN. SELECT apellido, oficio WHERE oficio IN ( SELECT oficio Em, DEPARTAMENTOS De WHERE Em.dep_no=De.dep_no AND dnombre='investigacion') 11

31. Visualizar el número de departamento con más empleados. Con la cláusula TOP: SELECT TOP( 1 ) dep_no, COUNT(*) AS "Total Empleados" ORDER BY COUNT( * ) DESC Utilizando la cláusula >= ALL SELECT dep_no AS NºDpto, COUNT(*) AS TotalEmpleados HAVING COUNT(*) >= ALL ( SELECT COUNT(*) AS NumEmps ) 32. Visualizar los números de departamentos en los que el salario medio de sus empleados sea mayor o igual que la media de todos los salarios. SELECT dep_no AS NºDpto HAVING AVG(salario) >= ( SELECT AVG(salario) ) 33. Visualizar el departamento con más presupuesto asignado para pagar el salario y la comisión de sus empleados. Con la cláusula TOP: SELECT TOP(1) dep_no ORDER BY SUM(salario+NVL(comision,0)) DESC Utilizando la cláusula >= ALL SELECT dep_no AS NºDpto HAVING SUM(salario+NVL(comision,0)) >= ALL ( SELECT SUM(salario+NVL(comision,0)) ) 34. Visualizar el número de departamento, el oficio y el salario de los oficios con mayor salario de cada departamento. SELECT dep_no, oficio, salario E1 WHERE salario = ( SELECT MAX(salario) E2 WHERE E1.dep_no=E2.dep_no) 12