Contenido
PalancaEjercicios de consulta SQL corregidos.
Estos ejercicios de consulta SQL corregidos son para principiantes y usuarios avanzados.
Ejercicio de flashback sobre el modelo entidad-asociación
Una agencia inmobiliaria quiere gestionar su cartera inmobiliaria. Quiere almacenar todos los alojamientos de alquiler en su base.
Para ello asigna un identificador a cada alojamiento, su dirección, su superficie y el alquiler. Una vivienda está situada en un barrio al que se le asigna un número y una etiqueta. Cada alojamiento corresponde a un tipo de alojamiento con cargos fijos asociados al mismo. Además, la agencia también abastece a los inquilinos de su parque. Estos se identifican mediante un número, se caracterizan por sus apellidos, nombres, fecha de nacimiento y número de teléfono. A una vivienda pueden estar asociados varios inquilinos. Por otro lado, un individuo sólo puede ser referenciado en un alojamiento.
Propondrás el modelo entidad-asociación de estas especificaciones
Y deducirás el modelo lógico identificando las claves primaria y externa.
Ejercicio preliminar para entender SQL
Una pequeña empresa creó una base de datos relacional para almacenar información sobre sus empleados y los departamentos a los que pertenecen. La base de datos contiene las siguientes tablas (las claves principales están subrayadas):
EMPLEADO(ID de empleado, apellido, nombre, profesión, fecha_contratación, salario, comisión, id_departamento) contiene la lista de empleados, definida por un identificador interno del sistema, su apellido (único), su nombre, su profesión (ejecutivo, gerente, ingeniero, comercial, técnico y pasante), su fecha de contratación, su salario (entero positivo, un pasante no puede recibir pago), su comisión (un empleado no puede tener comisión) y el identificador del departamento al que pertenece el empleado.
DEPARTAMENTO(id_departamento, nombre, director, ciudad) contiene la lista de departamentos definidos por un identificador único, su nombre (ventas, producción, desarrollo y recursos humanos), el identificador del empleado director del departamento y la ciudad, ubicación del departamento.
Aquí está el esquema de la base de datos en forma gráfica:
La base de datos contiene los siguientes datos:
Ejercicio 1
Para cada una de las siguientes consultas, proporcione su significado en francés (tenga cuidado de no parafrasear el código SQL) e indique el resultado.
1) SELECCIONE DEPARTAMENTO.departamento_id, DEPARTAMENTO.nombre
DEL DEPARTAMENTO
DONDE DEPARTAMENTO.Id_departement NO ESTÁ (SELECCIONE EMPLEADO.Id_departement DEL EMPLEADO);
2) SELECCIONE E2.nombre COMO “Nombre del Director”, CUENTA(E1.nombre) COMO “Número de Empleados”
DEL EMPLEADO E1, EMPLEADO E2, DEPARTAMENTO D
DONDE E1.Id_departemento = D.Id_departemento
Y E2.Id_empleado = D.Director
GRUPO POR E2.nombre
ORDENAR POR 1;
3) SELECCIONE nombre, salario DEL EMPLEADO
DONDE salario > TODOS (SELECCIONAR salario
DEL EMPLEADO
WHERE profesión = 'Ingeniero');
4) SELECCIONE E1.name COMO “Nombre del empleado”, E1.hire_date, E2.name COMO “Nombre del director”, E2.hire_dateDEL EMPLEADO E1, EMPLEADO E2, DEPARTAMENTO DONDE E2.Id_employe = D.DirectorAND E1.Id_departement = D.Id_departmentAND E1.Fecha_contratación < E2.Fecha_contratación;
1) ¿Qué departamentos no tienen empleados?
No hay filas seleccionadas
2) ¿Cuál es el número de empleados por director?
Nombre Director Número de Empleados
—————————— ————————–
jackson 3
Lavergne 1
McDonald's 4
Valiente 2
3) ¿Cuál es el salario y el nombre de los empleados que ganan más que todos los ingenieros?
Nombre Salario
—————————- ————–
Furnon 6000
Babin 7000
McDonald's 10000
4) ¿Cuál es el nombre y fecha de contratación de los empleados contratados antes que su jefe? También indique el nombre y fecha de contratación de su director.
Nombre Empleado Fecha_contratación Nombre Director Fecha_contratación
———————- ————————- ———————— ———————-
Sutton 04/01/1989 McDonald 05/06/2001
Furnon 11-06-1989 McDonald 06-05-2001
Babin 08-08-2000 McDonald 05-06-2001
Ejercicio 2
Para cada consulta indique si (Sí o No) da el resultado solicitado (varias consultas pueden dar el resultado correcto)
6) Indique el salario y el nombre de los empleados que ganan más que el salario más bajo de los ingenieros:.
6a SELECCIONE DISTINTO E1.nombre, E1.salario DEL EMPLEADO E1, EMPLEADO E2 DONDE E2.Profesión = 'Ingeniero'Y E1.salario > MIN(E2.salario);
6b SELECCIONE nombre, salario DE EMPLEADO DONDE salario > TODOS (SELECCIONE MIN(salario) DE EMPLEADO DONDE profesión = 'Ingeniero');
6c SELECCIONE nombre, salario DEL EMPLEADO DONDE salario < CUALQUIER (SELECCIONE MIN(salario) DEL EMPLEADO
WHERE profesión = 'Ingeniero');
- Indique los nombres de los empleados con la misma profesión y el mismo director que 'Furnon':
7a SELECCIONE nombre, profesiónDEL EMPLEADODONDE nombre <> 'Furnon'Y Id_departement EN (SELECCIONE D2.Id_departementDEL EMPLEADO E, DEPARTAMENTO D1, DEPARTAMENTO D2DONDE E.name = 'Furnon'Y D1.Id_departement = E.Id_departementAND D1.Directeur = D2.Directeur );
7b SELECCIONE E.nomDEL EMPLEADO E, DEPARTAMENTO DONDE E.nombre <> 'Furnon' AND E.Id_departement = D.Id_departementAND (profesión, director) = (SELECCIONE profesión, D1.directorDEL EMPLEADO E1, DEPARTAMENTO D1, DEPARTAMENTO D2DONDE E1.nombre = 'Furnon'Y E1.Id_departement = D1.Id_departementY D1.Directeur = D2.Directeur);
8) Indique los nombres de los empleados del departamento 'Comercial' contratados el mismo día que un empleado del departamento 'Producción':
8a SELECCIONE DISTINTO E1.nombre DEL EMPLEADO E1, DEPARTAMENTO D1, EMPLEADO E2, DEPARTAMENTO D2 DONDE E1.Id_departement = D1.Id_departementY E2.Id_departement = D2. Id_departement AND D1.name = 'Comercial'AND D2.name = 'Producción'AND E1.Date_hire = E2.Date_hire;
8b SELECCIONE E.nombreDEL EMPLEADO E, DEPARTAMENTO DDONDE E.Id_departamento = D.Id_departamentoY D.nombre = 'Comercial'Y E.Fecha_contratación EN (SELECCIONE E1.Fecha_contrataciónDEL EMPLEADO E1, DEPARTAMENTO D1DONDE E1. Id_departemento = D1. Id_departementoY D1.nombre = 'Producción');
8c SELECCIONE E.nombreDEL EMPLEADO E, DEPARTAMENTO DDONDE E.Id_departemento = D.Id_departementoY D.nombre = 'Comercial'Y E.Fecha_contratación EXISTE (SELECCIONE E1.Fecha_contrataciónDEL EMPLEADO E1, DEPARTAMENTO D1DONDE E1. Id_departemento = D1. Id_departementoY D1.nombre = 'Producción');
9) Indique los nombres de los empleados con salario máximo en cada departamento:
9a SELECCIONE nombre DEL EMPLEADO DONDE (Id_departamento, salario) EN (SELECCIONE Id_departamento, MAX (salario) DE EMPLEADO GRUPO POR Id_departamento);
9b SELECCIONE nombre DEL EMPLEADO EN DONDE salario = (SELECCIONE MAX (salario) DEL EMPLEADO E1 DONDE E1. Id_departement = E. Id_departement);
9c SELECCIONE E1.nombre, E1.departamento_id, MAX(E1.salario)
DEL EMPLEADO E1, EMPLEADO E2
DONDE E1. Id_departamento = E2. id_departamento
GRUPO POR E1.nombre, E1.id_departamento;
6a NO
6b SÍ
6c Sí
7a NO
7b SÍ
8a SÍ
8bOinterfaz de usuario
8c NO
9a SÍ
9b SÍ
9c Sí
Ejercicio 3
11) Proporcione los comandos SQL para mostrar la lista de todos los departamentos con el apellido, nombre, salario e identificador de los empleados asignados a ellos. Tenga en cuenta: un departamento no puede tener ningún empleado.
12) Proporcione los comandos SQL para mostrar la lista de trabajos con el salario promedio más bajo; Indique también su salario medio.
13) Proporcione los comandos SQL para mostrar los empleados del departamento de 'Producción' cuyo salario es inferior a 5000 $ y los empleados del departamento 'Comercial' cuyo salario excede el salario promedio.
11)
SELECCIONE D.apellido, E.employee_id, E.apellido, E.nombre, E.salario
DEL EMPLEADO E, DEPARTAMENTO D
DONDE D.Id_departemento = E.Id_departemento(+)
ORDENAR POR D.apellido, E.apellido, E.nombre;
12)
SELECCIONE profesión, PROMEDIO(salario) DE EMPLEADOGRUPO POR profesiónTENIENDO PROMEDIO(salario) = (SELECCIONE MIN(PROMEDIO(salario)) DE EMPLEADO
GRUPO POR profesión);
13)
SELECCIONE E1.Id.Empleado, E1.Nombre, E1.Salario
DEL EMPLEADO E1, DEPARTAMENTO D1
DONDE D1.Id_departemento = E1.Id_departemento
Y D1.Nombre = 'producción'
Y E1.Salario < 5000
UNIÓN
SELECCIONE E2.Id.Empleado, E2.Nombre, E2.Salario
DEL EMPLEADO E2, DEPARTAMENTO D2
DONDE D2.Id_departemento = E2.Id_departemento
Y D2.Nombre = 'comercial'
Y E2.Salario > (SELECCIONE PROMEDIO(E3.Salario) DEL EMPLEADO E3)
ORDENAR POR 1, 2;
Ejercicio 4
Proporcionará los comandos SQL para crear las tablas de la base de datos, incluidas todas las restricciones establecidas que se pueden especificar en el comando de creación de tablas. Tenga en cuenta que al eliminar un departamento se deben eliminar todos sus empleados.
CREAR TABLA DE DEPARTAMENTOS (
Id_department NUMÉRICO (3) CLAVE PRIMARIA,
Nombre VARCHAR2 (30) CHECK (Nombre IN ('Comercial', 'Desarrollo', 'Producción', 'Recursos Humanos')),
Director NUMÉRICO (6) NO NULO ÚNICO,
Ciudad VARCHAR2 (20) NO NULO
);
CREAR TABLA DE EMPLEADOS (
Id_employee CLAVE PRIMARIA NUMÉRICA (6),
Nombre VARCHAR2 (30) NO NULO ÚNICO,
Nombre VARCHAR2 (30) NO NULO,
Profesión VARCHAR2 (30) NOT NULL CHECK (Profesión IN ('Ejecutivo', 'Gerente', 'Ingeniero', 'Vendedor', 'Técnico', 'Becario')),
Hire_date FECHA NO NULA,
Salario INT NO NULL CHECK (Salario >= 0),
Comisión INT DEFAULT 0,
Id_departement RESTRICCIÓN NUMÉRICA (3) fk_employe_departement DEPARTAMENTO DE REFERENCIAS (Id_departamento) AL ELIMINAR CASCADA
);
BDD Coches.txt
La base de datos utilizada modela una actividad de alquiler de coches entre particulares: coches
La información guardada en la base de datos es información sobre los coches, los propietarios de estos coches, los clientes y los alquileres realizados.
Se toma el siguiente diagrama relacional:
CARRO (immat, modelo, marca, categoría, color, lugares, compraA, contador, precioJ, #codeP )
DUEÑO (códigoP, apodo, correo electrónico, ciudad, añoI)
CLIENTE (códigoC, apellido, nombre, edad, licencia, dirección, ciudad)
ALQUILER (#CodeC, #immat, año, mes,numLoc, km, duración, ciudadD, ciudadA, fechaD, fechaF)
Las claves principales están en negrita/subrayadas; las claves foráneas están precedidas por un#
Ejercicio 1
- ¿Qué marca es el vehículo modelo T550?
- ¿Cuáles son los apodos de los dueños de París?
- ¿En qué marcas se encuentran los vehículos de la categoría 'lujo'? ¿Qué debo utilizar para evitar duplicados?
- ¿Cuáles son las matriculaciones de descapotables de 4 plazas?
- ¿Cuántas categorías diferentes de automóviles hay?
- ¿Cuáles son las diferentes categorías de automóviles?
- ¿Qué modelos de Peugeot están disponibles para alquilar?
- Lista (pseudo) de propietarios con una dirección de correo electrónico nula
- ¿Cuál es el kilometraje del vehículo `75AZ92′?
- ¿Qué clientes (sólo el nombre) viven en "Nantes"?
- ¿Usar DISTINCT fue una buena opción? Y por qué ?
seleccione la marca del automóvil donde modelo = 'T550'; —Ferrari
seleccione el apodo del propietario donde ciudad = 'París'; - (4 filas devueltas)
seleccione la marca del automóvil donde categoría = 'Lujo'; - (3 filas devueltas, 1 con distinta)
seleccione immat del automóvil donde categoría = 'convertible' y plazas = 4; - (1 fila devuelta)
seleccione el recuento (categoría distinta) del automóvil; — (7)
seleccione una categoría distinta del automóvil; - (7 filas devueltas)
seleccione el modelo del automóvil donde marca = 'Peugeot'; - (5 filas devueltas)
seleccione el apodo del propietario donde el correo electrónico es nulo; - (2 filas devueltas)
seleccione el contador del automóvil donde immat =’75AZ92′; — 17560
seleccione el nombre del cliente donde ciudad ='Nantes';
Advertencia DISTINCT borra homónimos
Ejercicio 2
- Listado de vehículos (immat) por año de compra (del más nuevo al más antiguo).
- Verifique agregando el año de compra a la lista
- Listado de marcas y modelos ordenados por marca y modelo.
- Listado de coches con al menos 4 plazas (marca, modelo, matrícula, plazas) en orden decreciente de plazas.
- Listado de ciudades de propietarios (sin duplicados y en orden alfabético).
- Listado de alquileres (lista de matriculaciones de vehículos) clasificados en orden descendente de km recorridos
seleccione immat del pedido del automóvil mediante compraA; - (20 filas devueltas)
seleccione immat, compreA del pedido del automóvil por compraA; - (20 filas devueltas)
seleccione una marca y modelo distintos del automóvil, ordene por marca y modelo; - (15 filas devueltas)
seleccione marca, modelo, piso, plazas del coche donde plazas >= 4 ordenar por plazas DESC; - (10 filas devueltas)
seleccione una ciudad distinta del orden del propietario por ciudad ASC; - (se devolvieron 6 filas)
seleccione immat, km desde la ubicación ordenar por km DESC; - (133 filas devueltas)
Ejercicio 3
1) ¿Lista de nombres de clientes en Lyon?
lo mismo sin los duplicados.
¿Cuántos clientes de Lyon hay? (recuento(*), recuento(nombre), recuento(nombre distinto))
¿Observa los resultados y explica las diferencias entre los 3 resultados obtenidos?
2) Mismas preguntas pero con nombres.
¿Cuántas parejas diferentes (apellido, nombre) hay en la base de datos (todas las ciudades juntas?
— 1
seleccione el nombre del cliente donde ciudad ='Lyon';
seleccione un nombre distinto del cliente donde ciudad ='Lyon';
seleccione recuento (nombre) del cliente donde ciudad = 'Lyon';
seleccione recuento (*) del cliente donde ciudad ='Lyon';
seleccione recuento (nombre distinto) del cliente donde ciudad = 'Lyon';
— 2
seleccione apellido, nombre del cliente donde ciudad = 'Lyon';
seleccione recuento (*) del cliente donde ciudad ='Lyon';
seleccione recuento (nombre) del cliente donde ciudad = 'Lyon';
seleccione recuento (nombre distinto) del cliente donde ciudad = 'Lyon';
seleccione apellido, nombre del cliente donde el nombre es NULL y ciudad ='Lyon';
Ejercicio 4
- ¿Cuántos convertibles rojos o azules hay?
- ¿Cuántos coches hay en la categoría (familiar con menos de 50.000 km, o utilitario), blancos o negros?
- Listado (immat, marca, modelo) de los modelos de las marcas Peugeot y Citroen mostrados por marca y modelo
- Lista de clientes de París mayores de 50 años por orden alfabético
- Lista (immat) de vehículos blancos excepto descapotables
- ¿Cuántos vehículos de las categorías de lujo y premium hay antes de 2012 (2012 incluido)?
- Lista de alquileres (número de alquiler, con ciudad, año, mes) que comenzaron y terminaron en la misma ciudad en orden cronológico (el más reciente primero)
- Lista de automóviles que datan de 2010 a 2012 (2010 y 2012 inclusive)
- Listado de coches de las marcas Renault, Peugeot o Citroen (uso IN).
- ¿Cuántos propietarios no viven ni en París, ni en Lyon, ni en Nantes?
- Lista de clientes que alquilaron sin licencia
1 Listado de clientes (códigoC) que han realizado alquileres.
2 Listado de clientes (códigoC) que tienen número de permiso
3 Listado de clientes (códigoC) que no tienen número de licencia
4 Listado de clientes (codeC) que alquilaron sin número de licencia
12 Listado (nombre y apellido) de clientes que viven en la misma ciudad que un propietario
13 Lista (immat) de coches que se han alquilado (al menos una vez)
14 Lista (immat) de coches que nunca han sido alquilados
Ejercicio 5
- ¿Cuál es el apodo del propietario del coche '56AA46′?
- ¿Cuántos alquileres hay para un Peugeot 205?
- Listado (marca, modelo, matrícula, número de alquiler) de coches alquilados en 4/2015.
- Listado (marca, modelo, matrícula, número de alquiler) de los coches alquilados en el año de su compra.
- Lista de pegatinas de vehículos Peugeot
- Lista de immats de vehículos Peugeot e información de alquiler correspondiente por año, mes e immat
- ¿La lista de clientes que han alquilado un vehículo Ferrari?
- ¿Qué modelos de Peugeot se han alquilado?
Ejercicio 6
- Listado de marcas con más de 3 coches disponibles para alquiler
- Relación de immat de vehículos que han recorrido más de 800 km en alquiler
- Lista de modelos de coches que se han alquilado al menos 3 veces
— 1: lista de marcas con más de 3 (>) coches disponibles para alquiler
marca de selección - (se devuelven 2 filas)
desde el coche
grupo por marca
tener recuento(*) > 3;
— 2: lista de immats de coches que han recorrido más de 800 km en alquiler
seleccione immat - (se devolvieron 15 filas)
desde la ubicación
grupo por immat
teniendo suma(km) > 800;
— 3: modelos de coche que se han alquilado al menos 3 veces (con número de alquileres)
— mostrado en orden alfabético por modelo
seleccione v.model, count(l.numloc) - (se devolvieron 15 filas)
desde la ubicación l ÚNETE al coche v ON l.immat = v.immat
grupo por v.modele
teniendo recuento (l.numloc) >= 3
ordenar por v.modelo;
Ejercicio 7
- Kms recorridos en alquiler por Alain Delon, coche (immat) por coche
- Marcas y km medios recorridos en alquiler (por marca)
- ¿Cuál es el coche más antiguo? (con MÍN)
- ¿Qué coche tiene más kilómetros en el cuentakilómetros que todos los Peugeot? (con toda)
- ¿Qué coche/s tienen un precio diario más alto que un Ferrari?
- Muestra la lista de automóviles con un kilometraje superior al kilometraje promedio general.
- ¿Lista de automóviles con un odómetro de kilómetros superior al odómetro de kilómetros promedio de su modelo?
Ejercicio 8
- ¿Lista de modelos de automóviles alquilados al menos 3 veces (con número de alquileres)?
- ¿Qué coche ha recorrido más km en alquiler?
- ¿Qué cliente(s) realizó más alquileres?
- ¿Qué cliente ha alquilado más vehículos diferentes?
- ¿Cuál es el total de kilómetros de alquiler realizados para el propietario del P75?
- ¿Cuál es el total de kilómetros de alquiler realizados por el propietario del coche P75 por coche?
Lo mismo pero teniendo en cuenta que los alquileres de más de 300 km.
lo mismo excepto para los vehículos que hayan recorrido un total de más de 300 km en alquiler.
Para verificación, listado de alquileres realizados por vehículos P75.
Ejercicio 9
La consulta en cuestión es: ¿qué clientes (nombres) utilizan el mismo número de licencia?
Para guiarte una serie de consultas progresivas.
- Para cada número de permiso, muestre el número de veces que se utiliza.
- ¿Lista de números de licencia que se han utilizado más de una vez?
- Lista de nombres de clientes con un número de licencia utilizado más de una vez.
- Lista de nombres de clientes cuyo número de licencia es igual al número de licencia de otro cliente (con IN)
- Escritura alternativa para (4) usando igualdades de unión explícitas (SQL1).
- Si quedan duplicados, ¿cómo los elimino?
Ejercicio 10
La consulta dirigida es: ¿qué clientes (los nombres) alquilaron todos los coches?
a) Lista de automóviles que no han sido alquilados; escribir usando NOT EXISTS. (reformulación: vehículos para los que no existe ningún alquiler con este número de matrícula).
(b) Lista de nombres de clientes para quienes existen vehículos que él (el cliente) no ha alquilado.
(c) Relación de nombres de clientes que han alquilado todos los vehículos de la flota.
(reformulación: lista de nombres de clientes para quienes no hay ningún vehículo que no hayan alquilado.
— La consulta en cuestión es: ¿qué clientes (los nombres) alquilaron todos los coches?
— a) lista de vehículos que no han sido alquilados; escribir usando NOT EXISTS.
SELECCIONAR car.immat - 1 fila
desde el coche
donde no existe (seleccione * de la ubicación donde ubicación.immat=car.immat);
— b) Relación de nombres de clientes para quienes existen vehículos que él (el cliente) no ha alquilado.
SELECCIONE DISTINTO apellido, nombre
del cliente, coche
donde no existe (seleccione codeC de la ubicación donde location.immat=voiture.immat y client.codeC=location.codeC);
— c) Relación de nombres de clientes que han alquilado todos los vehículos de la flota.
— (nueva redacción: lista de nombres de clientes para quienes no hay ningún vehículo que no hayan alquilado.
seleccione nombre.cliente
desde la ubicación, cliente
donde ubicación.codeC= cliente.codeC
grupo por client.codeC
tener count(distinct immat)>= (seleccione (count(distinct immat)) del automóvil);
BDD Vins.txt
Queremos utilizar el siguiente diagrama relacional para gestionar una bodega. La base de datos que representa esta bodega tiene el siguiente esquema relacional: vinos
VINO (númV, añada, año, título)
PRODUCTOR ( númeroP, apellido, nombre, región)
COSECHA ( nprod#, nvin#, cantidad)
Y los siguientes csv: vino, cosecha, productor.
Usando la siguiente declaración, traduce cada línea del archivo .csv en una tupla en la tabla correspondiente
CARGUE EL ARCHIVO DE DATOS 'ruta absoluta/XXX.csv' EN LOS CAMPOS DE LA TABLA XXX TERMINADOS POR ';' LÍNEAS TERMINADAS EN '\r\n';
CARGUE EL ARCHIVO DE DATOS 'C:/XXX.csv' EN LOS CAMPOS DE LA TABLA XXX TERMINADOS POR ';' LÍNEAS TERMINADAS EN '\r\n'; si el archivo XXX.csv está bajo la raíz
Un vino se caracteriza por un número entero, una añada, un año de elaboración y una titulación. Todos los vinos están representados por la relación VIN. La clave para la relación VIN es el atributo numV.
Un productor se caracteriza por un número entero, un apellido, un nombre y una región. Todos los productores están representados por la relación PRODUCTOR. La clave de la relación PRODUCTOR es el atributo numP. Un productor produce uno o más vinos. Por el contrario, un vino es elaborado por uno o varios productores (¡posiblemente ninguno!).
Toda la producción está representada por la relación COSECHA. Una tupla de la relación RECOLTE representa una producción particular de un vino de número nvin por parte de un productor de número nprod en una determinada cantidad. La clave de la relación COSECHA es el grupo de atributos (nvin, nprod).
Ejercicio 1
1- Cree la base de datos a partir de los archivos proporcionados.
De forma predeterminada, los archivos solo se pueden leer desde el directorio especificado en la variable Secure_file_priv.
MOSTRAR VARIABLES COMO “secure_file_priv”;
Coloque sus archivos en este directorio y cárguelos para completar sus tablas.
CARGAR ARCHIVO DE DATOS 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/producer.csv'
EN LA MESA productor
CAMPOS
TERMINADO POR ';'
LÍNEAS
COMENZANDO POR »
TERMINADO POR '\r\n';
2- Visualizar la información contenida en la relación VIN.
3- Dar la lista de productores que no tienen nombre.
4- Dé la lista de las distintas regiones de producción de vino.
5- Da la lista de vinos del año 1980.
6- Indique la lista de nombres y apellidos de los productores de vino que no pertenecen a las siguientes regiones: Córcega, Beaujolais, Borgoña y Ródano.
7- ¿Cuál es la lista de añadas cosechadas en 1979? Muestra la añada, el número de productor y la cantidad producida.
8- ¿Cuáles son los nombres de los productores de Cru Etoile, sus regiones y la cantidad de vinos cosechados?
9- ¿Cuál es el número de cosechas?
10-¿Cuántos productores de vino hay en la región de Saboya y Jura?
11-¿Cuántos productores de vino hay que hayan cosechado al menos un vino en la región de Saboya y Jura?
12-Cuáles son las cantidades de vino producidas por región. Dé la lista ordenada por cantidad decreciente.
13- ¿Cuál es la cantidad de vino producida de grado >12 por número de vino?
14- ¿Cuál es el mayor grado de añada o añadas?
15- Dar la lista ordenada de vinos.
16- Dar la lista ordenada de vinos cosechados.
17- Entonces ¿cuál es la materia prima no cosechada?
18- ¿Dar la lista ordenada de añadas y la cantidad por añada?
19- ¿Cuál es la graduación media de los vinos?
20- ¿Cuáles son las añadas (ordenadas por grado y año) de mayor grado que el grado medio de las añadas?
seleccione * de vino; # 101 filas
seleccione * del productor; # 200 filas
seleccione * de la cosecha; # 200 filas
#Pregunta 2 – 7
seleccione un nombre distinto del productor donde el nombre es nulo; # 0 filas
seleccione un nombre distinto del productor donde nombre = » o nombre es nulo; # 12 filas
seleccionar una región distinta del productor; # 11 filas
seleccionar grado, añada del vino donde año=1980 ordenar por grado desc; # 18 filas
seleccione nombre, nombre, región del productor donde la región no está en ('Córcega', 'Beaujolais', 'Borgoña', 'Ródano') ordenar por nombre asc; # 164 filas
seleccione nprod, añada, cantidad de vino v, cosecha r donde año=1979 y v.numV=r.nprod ordenar por nprod; # 5 filas
#Pregunta 8- 13
seleccione cru,nombre,región,cantidad FROM WINE v,PRODUCER p,COSECHA r WHERE cru='Star' AND p.numP=v.numV AND p.numP=r.nprod; #1 fila
seleccione CONTAR(*) DE COSECHA; # –> 665
seleccione CONTAR(*) DEL PRODUCTOR DONDE región en ('Savoie','Jura'); # –> 57
seleccione CONTAR(*), cantidad DEL PRODUCTOR p,COSECHA r DONDE región en('Savoie','Jura') AND p.numP=r.nprod AND cantidad>0 GRUPO POR cantidad; # 22 filas
seleccione SUMA(cantidad) DE COSECHA R, PRODUCTOR P DONDE R.nprod=P.numP GRUPO POR región ORDEN POR cantidad DESC; # 10 filas
seleccione SUMA(cantidad) de la cosecha r, vino v donde v.numV=r.nvin y v.degre>12 agrupar por nvin; # 14 filas
# Pregunta 14-20
seleccione raw DESDE VIN DONDE grado en (seleccione MAX (grado) DESDE VIN); # –> Amor Santo
seleccione cru DEL VINO PEDIR POR cru ASC; #101 filas
seleccione cru distintos de vin v, coseche r donde v.numV=r.nvin ordene por cru; # 61 filas
seleccione cru de vin v donde v.cru no esté (seleccione cru de vin v, coseche r donde v.numV=r.nvin); # –> Saint Veran
seleccione cru, SUMA (cantidad) de vin v, cosecha r donde v.numV = r.nvin agrupar por cru ordenar por cru; # 61 filas
seleccione promedio (grado) de vin v; # –> 11.35
seleccione cru,grado,año de vin donde grado > (seleccione promedio (grado) de vin v) ordene por cru,grado,año; # 48 filas
Ejercicio 2
1 – Regala todos los vinos cuya añada comience con la letra 'S'
2 – Indicar todos los vinos distintos cuya fecha de elaboración sea entre 1980 y 1981
3 – Selecciona todas las producciones del productor número 606
4 – Indique por número de productor, la cantidad total de vino producido. Consulta con la pregunta 2
5 – Indique por número de productor, la cantidad total de vino producido si es superior a 400 y todo ordenado en orden ascendente de las cantidades calculadas utilizando un alias sobre la suma
6 – Busque la cosecha de Pommard más antigua. Publícalo con el comentario: “el que prefiero”
7 – ¿Cuáles son los números de los productores que cosecharon más vinos diferentes?
8 – Agregue una columna a la tabla del Productor correspondiente a su fecha de nacimiento,
Modificar los siguientes productores existentes en la base de datos asignándoles su fecha de nacimiento
fecha de nacimiento = '1960-12-11′ nombre = 'Seis';
fecha de nacimiento = '1962-12-11′ nombre = 'Lasnier';
fecha de nacimiento = '1970-12-11′ nombre='Moniot';
fecha de nacimiento = '1970-12-11′ nombre='Boxler';
fecha de nacimiento = '1980-12-11′ nombre = 'Jayer';
fecha de nacimiento = '1961-05-10′ nombre='Grivot';
fecha de nacimiento = '1980-12-11′ nombre='Tortochot';
9 – Seleccionar los productores cuya fecha de nacimiento no sea cero
10 – Calcula la edad de Grivot
11 – Calcular el número de productores por edad
1- seleccione cru de vin donde cru como 's%';
2- seleccionar cru distintos, añejados de vin donde añejados entre 1980 y 1981;
3- seleccione * de la cosecha donde nprod = 606;
4- seleccione nprod, sum(qte) del grupo de cosecha por
nprod;
5- seleccione nprod, sum(qte) como suma del grupo de cosecha por
nprod con suma(qte) > 400 orden por suma;
6- seleccione cru, annee de vin donde cru='Pommard';
seleccione concat (cru, 'el que prefiero'), año
de vin donde cru = 'Pommard' y annee >= (seleccione max(annee) de vin donde cru='Pommard');
7- seleccione nprod, nombre de cosecha, productor donde cosecha.nprod = productor.num
grupo por nprod
teniendo recuento (nvin distinto) >= Todo
(seleccione contar (nvin distinto) como nbvindiferente del grupo de recolección por nprod
);
seleccione nprod, nombre de cosecha, productor donde cosecha.nprod = productor.num
grupo por nprod
teniendo recuento (nvin distinto) >=
(seleccione max(nbvindiferente) de
(seleccione contar (nvin distinto) como nbvindiferente del grupo de recolección por nprod) P);
seleccione max(nbvindiferente) de
(seleccione recuento (nvin distinto) como nbvindiferente del grupo de recolección por nprod) P;
seleccione nprod, cuente (nvin distinto) como nbvindiferente
del grupo de cosecha por orden de nprod por nbvindiferente descripción;
seleccione * de la cosecha donde nprod=355;
8- modificar el productor de la tabla agregar la columna fecha y hora de nacimiento;
9- seleccione * del productor donde num <5;
actualizar productor establecer nacimiento = '1990/10/10' donde num = 1;
10- SELECCIONE el nombre, Año (fecha_actual()) – AÑO (productor.nacimiento) como EDAD DEL productor
donde el nacimiento no es nulo;
11- seleccione contar(*) como número, Año(fecha_actual()) – año(productor.nacimiento)como edad
del productor donde el nacimiento no es nulo grupo por edad;
Ejercicio 3
Reanude la base de datos de VIN y responda las siguientes preguntas:
1 – ¿Cuáles son los nombres de los productores del vino N° 5;
2 – ¿Quiénes son los productores que elaboraron el vino 'Pommard'?
3 – ¿Cuáles son las añadas que se cosechan?
7- ¿Cuál es la lista de añadas cosechadas en 1979? Muestra la añada, el número de productor y la cantidad producida.
5- ¿Cuáles son los nombres de los productores de Cru Etoile, sus regiones y la cantidad de
vinos cosechados?
6 – ¿Cuál es el número de productores de añadas recolectadas en Saboya y el Jura?
7 – ¿Cuál es entonces la materia prima no cosechada?
8 – ¿Dar la lista ordenada de añadas y la cantidad por añada?
9 – Indique los nombres de los productores que cosecharon los vinos más diferentes.
10 – Dar la lista de nombres de productores que no cosecharon
11 – ¿Cuáles son los nombres de las personas con el mismo nombre?