0% encontró este documento útil (0 votos)
38 vistas22 páginas

Consultas SQL

El documento presenta una serie de consultas SQL para gestionar y extraer información de una base de datos, incluyendo listados de empleados, pedidos, clientes y productos. Se incluyen ejemplos de consultas para contar, sumar, y agrupar datos, así como para crear vistas y manejar actualizaciones y eliminaciones en la base de datos. También se abordan aspectos como índices y la manipulación de datos con instrucciones de inserción, actualización y eliminación.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
38 vistas22 páginas

Consultas SQL

El documento presenta una serie de consultas SQL para gestionar y extraer información de una base de datos, incluyendo listados de empleados, pedidos, clientes y productos. Se incluyen ejemplos de consultas para contar, sumar, y agrupar datos, así como para crear vistas y manejar actualizaciones y eliminaciones en la base de datos. También se abordan aspectos como índices y la manipulación de datos con instrucciones de inserción, actualización y eliminación.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

Consultas SQL

Listar todos los empleados registrados en la base de datos.

Select firstName, lastName

From employees

____________________________________________________________________________

Listar la ciudad, teléfono y código postal de las oficinas ubicadas en

“USA”.

select phone, city, postalCode

from offices

Where country = 'USA';

____________________________________________________________________________

Listar los pedidos con estado enviado (Shipped) cuya fecha de pedido

fue posterior al 1 de enero de 2005.

select status, shippedDate

from orders

Where status = 'Shipped'and shippedDate > '01-01-2003';

___________________________________________________________________________

Listar los pedidos con estado enviado (Shipped) cuya fecha de

pedido fue posterior al 1 de enero de 2005 y de los pedidos con


estado cancelado cuya fecha de pedido fue anterior al 2004.

select status, shippedDate

from orders

Where (status = 'Shipped' and shippedDate > '01-01-2005') or (status = 'Cancelled' and shippedDate < '01-01-2004')

__________________________________________________________________________

Listar id y apellido de los empleados que tienen el cargo de

vendedor (Sales Rep), pero que pertenecen a las oficinas 2 o 5.

FROM employees

WHERE (jobtitle = 'Sales Rep' AND (officecode = '2' OR officecode = '5'))

_________________________________________________________________________

Listar los diferentes cargos existentes en la base de datos

SELECT distinct jobTitle

FROM employees

_________________________________________________________________________

Listar los diferentes nombres registrados en la base de datos como

contactos del cliente.

SELECT distinct contactFirstName, contactLastName

FROM customers

_________________________________________________________________________

Listar número y fecha de los pedidos de las que no se conoce su

descripción.

SELECT orderNumber, orderDate

FROM orders

where orderNumber isNull and orderDate isNull

_________________________________________________________________________

Listar los empleados que no tienen un jefe asignado

select firstName, lastName, reportsTo

from employees

where reportsTo isNull

_________________________________________________________________________

Obtener un listado con los códigos de pedidos que tienen

descripción.

select orderNumber, comments

from orders

where comments notnull


________________________________________________________________________

Obtener un listado de los pagos registrados durante el año 2004

select paymentDate, amount

from payments

where paymentDate between '01-01-2004' and '31-12-2004'

________________________________________________________________________

Obtener un listado con el numero de pedidos, código de productos

y precio cuyo precio de venta fue superior 130 USD pero que no

excedieron los 140 USD.

select orderNumber, productCode, priceEach

from orderdetails

where priceeach between '130' and '140'

_______________________________________________________________________

Listar los diferentes apellidos de registrados inicien con la letra S

select distinct lastName

from employees

where lastName like 'S%'

_______________________________________________________________________

Listar los nombres de los clientes que contengan alguna x en su

nombre

select contactFirstName

from customers

where contactFirstName like '%x%'

_______________________________________________________________________

Listar los nombres de los empleados cuyo nombre tenga una t como

segundo o tercer caracter

select firstName

from employees

where firstName like '_t%' or firstName like '__t%'

_______________________________________________________________________

Listar el nombre completo de los empleados que tienen como jefe

inmediato a los empleados 1102, 1108 o 1002

select firstName, lastName, reportsTo

from employees

where reportsTo in (1102, 1108, 1002)


_______________________________________________________________________

Generar un listado con los nombres y apellidos de los empleados

que han sido vendedores de los clientes de Japón, Hong Kong o Sur

Africa.

SELECT firstname,lastname

FROM employees

WHERE employeenumber in (

SELECT salesrepemployeenumber

FROM customers

WHERE country = 'Hong Kong' OR country = 'South Africa' OR country = 'Japan')

_______________________________________________________________________

Listar nombres de los clientes que han hecho pagos por un monto

superior a 90000 USD

select contactFirstName, contactLastName, customerNumber

from customers

where customernumber in (select customerNumber

from payments

where amount > '90000');

_______________________________________________________________________

Listar alfabéticamente los clientes registrados en la base de datos.

select contactFirstName, contactLastName

from customers

order by contactLastName, contactFirstName

_______________________________________________________________________

Generar un listado de los pedidos, ordenado alfabéticamente por

estado, mostrando los más recientes primero.

select status, orderDate

from orders

order by status, orderDate desc

_______________________________________________________________________

Calcular la cantidad de clientes registrados en la base de datos.

select count(contactFirstName)

from customers

_______________________________________________________________________

Calcular la cantidad de pagos que ha hecho el cliente 237


select count(amount)

from payments

where customerNumber = '237'

_______________________________________________________________________

Calcular la cantidad de pagos que ha hecho el cliente ANG Resellers

select count(amount)

from payments

where customerNumber in(

select customerNumber

from customers

where customerName = 'ANG Resellers')

________________________________________________________________________

Calcular el valor pagado por clientes en el segundo semestre de

2004.

SELECT SUM(amount)

FROM Payments

WHERE customerNumber IN (

SELECT customerNumber

FROM Orders

WHERE orderDate >= '2004-07-01' AND orderDate <= '2004-12-31')

________________________________________________________________________

Encontrar la fecha del pedido más reciente registrado.

select max(orderDate)

from orders

________________________________________________________________________

Encontrar la fecha del pedido más reciente registrado que ha sido

incluido productos de la línea de aviones (planes).

select max(orderDate)

from orders

where orderNumber in(

select orderNumber

from orderdetails

where productCode in(

select productCode

from products
where productLine = 'Planes'))

________________________________________________________________________

Calcular el valor promedio de los pagos que ha hecho el cliente 311

select avg(amount)

from payments

where customerNumber = '311'

________________________________________________________________________

Calcular la cantidad de empleados que tiene cada oficina

SELECT officeCode, COUNT(employeeNumber)

FROM Employees

GROUP BY officeCode

________________________________________________________________________

Encontrar la fecha de pedido más antiguo por cada estado de pedido.

select status, min(orderDate)

from orders

Group by status

Calcular el valor promedio de los pagos de cada cliente de USA, Francia

y Canadá.

SELECT customerNumber, AVG(amount)

FROM Payments

WHERE customerNumber IN (

SELECT customerNumber

FROM Customers

WHERE country IN ('USA', 'France', 'Canada'))

GROUP BY customerNumber

________________________________________________________________________

Listar, en orden descendente, la cantidad de pedidos que ha hecho

cada cliente.

SELECT customerNumber, COUNT(orderNumber) as cantidad

FROM Orders

GROUP BY customerNumber

ORDER BY cantidad DESC

_________________________________________________________________________

Calcular la cantidad de productos por cada línea de producto,

siempre y cuando esta cantidad sea inferior a 12.


select productline, count(*) as productos

from products

group by productline

having count (*)< 12

Generar un listado descendente con el valor promedio de los pagos

de cada cliente siempre y cuando este valor sea superior a 60 mil

dólares.

select customerNumber, avg(amount)

from payments

group by customerNumber

having avg(amount) > '60000'

order by avg(amount) desc

___________________________________________________________________________

Generar un listado con el nombre del cliente junto con Número,

Apellidos y Nombres de su vendedor asignado.

select firstName, lastName, employeeNumber, customerName

from employees, customers

where employeeNumber = SalesRepEmployeeNumber

___________________________________________________________________________

Generar una lista alfabética con los empleados y los datos de la

oficina a la que están asignados.

select firstName, lastName, [Link], [Link] city, phone, [Link], country

from employees, offices

where [Link] = [Link]

order by lastName, firstName desc

___________________________________________________________________________

Generar un listado con el nombre y ciudad del cliente, junto con la

ciudad en la que se encuentra ubicado su vendedor asignado.

select customerName, [Link], employeeNumber, SalesRepEmployeeNumber, [Link], [Link], [Link]

from customers, employees, offices

where salesRepEmployeeNumber = employeeNumber and [Link] = [Link]

___________________________________________________________________________

Generar un listado con el nombre del cliente junto con Número,

Apellidos y Nombres de su vendedor asignado.


select customerName, salesRepEmployeeNumber, employeeNumber, firstName, lastName

from customers inner join employees on

salesRepEmployeeNumber = employeeNumber

___________________________________________________________________________

Generar una lista alfabética con los empleados y los datos de la

oficina a la que están asignados.

select [Link], [Link], [Link], [Link], [Link], [Link], [Link],


[Link]

from employees inner join offices on

[Link] = [Link]

order by [Link], [Link] desc

___________________________________________________________________________

Generar un listado con el nombre y ciudad del cliente, junto con la

ciudad en la que se encuentra ubicado su vendedor asignado.

select customerName, [Link], [Link] as salesRepCity

from customers inner join employees on

salesRepEmployeeNumber = employeeNumber inner join offices

on [Link] = [Link]

___________________________________________________________________________

Obtener para cada oficina (ciudad), la cantidad de clientes que ha

tenido.

select [Link], count(*) as cantidadClientes

from customers right join employees e on

salesRepEmployeeNumber = employeeNumber right join offices on

[Link] = [Link]

group by [Link]

___________________________________________________________________________

Calcular la cantidad de pedidos cancelados que han incluido

productos de la línea de aviones (Plane)

select productLine, count(*) as cancelados

from products p inner join orderdetails od on

[Link] = [Link]

inner join orders o on

[Link] = [Link]

where status = 'Cancelled' and productLine = 'Planes'


group by productLine

__________________________________________________________________________

Sabiendo que a los productos de la línea de carros se les descuenta

el 17% de su precio, calcular el valor de dicho descuento en cada

producto, mostrando también su valor real.

SELECT

productCode, productName, productLine, buyPrice AS precio_real,

CAST(buyPrice * 0.17 AS NUMERIC(10, 2)) AS valor_descuento,

CAST(buyPrice - (buyPrice * 0.17) AS NUMERIC(10, 2)) AS precio_con_descuento

FROM Products

WHERE productLine = 'Classic Cars';

Sabiendo que a los productos de la línea de carros se les descuenta

el 17% de su precio, calcular el valor de total de descuentos en tales

productos.

SELECT

SUM(buyPrice * 0.17) AS total_descuentos

FROM Products

WHERE productLine = 'Classic Cars'

_________________________________________________________________

Sabiendo que al cliente 148 se le incrementa en el 10% sus pagos,

calcular el valor de dicho incremento en cada pago.

select amount as monto_incial, (amount * 1.1) as nuevo_monto, ((amount * 1.1) - amount) as total_aumento, [Link]

from payments inner join customers on

[Link] = [Link]

where [Link] = '148'

____________________________________________________________________

Incrementar en el 10% el precio actual del producto ingresado por

usted.

UPDATE PRODUCTS

SET BUYPRICE = BUYPRICE*1.1

WHERE PRODUCTLINE = ‘ryzerzon’

________________________________________________________________________

Cambiar el nombre del producto.

UPTADE products

SET productLine = ‘polaris’


WHERE productLine = ‘ryzerzon’

Insert Sintaxis:

insert into nombreTabla (nombreCampo1, nombreCampo2,…

nombreCampoN) values (valorCampo1, valorCampo2, valorCampoN);

► Cuando se insertan datos en todos los campos:

insert into nombreTabla values (valorCampo1, valorCampo2, …

valorCampoN)

Uptade:

Esta cláusula permite modificar el valor de uno (o un conjunto) de

atributos en una tabla.

► Sintaxis: Update nombreTabla

Set nombreAtributo = expresión

Where Condición;

► La expresión puede involucrar el valor actual del atributo.

Delete:

Esta cláusula permite eliminar uno (o varios) registros de una tabla.

► Sintaxis: Delete

From nombreTabla

Where Condición;

► Tener cuidado con la expresión condicional porque podría eliminar

toda la información de la tabla

__________________________________________________________________________

vistas

Sintaxis:

create view nombreVista as

(Select listaCampos

From tablas

Where expresion

Condicional

…)
Indices:

Tipos de índice: • Primary: es el que definimos como clave primaria. • “Index": crea un indice común, los valores no necesariamente son únicos
y aceptan valores "null". • “Unique": crea un indice para los cuales los valores deben ser únicos y diferentes, permite valores NULL Índices Sede
Tuluá ►

Sintaxis: CREATE [unique] INDEX [nombre_del_indice] ON [nombre_de_tabla] ([nombre_columna]);

► Ejemplos: create unique index I_libros_tituloeditorial on libros(titulo,editorial); create unique index I_libros_tituloeditorial on
libros(titulo,editorial);

___________________________________________________________________

Usando el esquema de base de datos “Classic Models”, crear una vista

que permita calcular la cantidad de productos por cada línea de

producto, siempre y cuando esta cantidad sea inferior a 12.

create view cantidadProductos as

(select productLine, count(productCode) as cantidad

from products

group by productLine

having count(productCode)<12)

_____________________________________________________________________

Usar la vista creada, para listar las líneas que tienen entre 1 y 5 productos

select *

from cantidadProductos

where cantidad between '1' and '5'

______________________________________________________________________

Crear una vista que permita generar un listado con la cantidad de pedidos por cada estado, mostrando código y nombre de producto.

create view TotalPedidos as (select status, [Link], productName, count(*) as cantidad

from orders inner join orderdetails on

[Link] = [Link] inner join products on

[Link] = [Link]

group by status, [Link], productName)

Usar la vista creada para obtener la cantidad promedio productos en órdenes en espera.

select avg(cantidad)

from TotalPedidos

where status = 'On Hold'

• Crear una vista que permita obtener el número, nombre y precio del producto de mayor valor entre los que tienen más de dos
cancelaciones de pedido.
Créate view CanceladosCaros as (select count(*) as cantidad, [Link], [Link], [Link]

from products p inner join orderdetails od on

[Link] = [Link] inner join orders o on

[Link] = [Link] where status = 'Cancelled'

group by [Link], [Link], [Link]

having count(*) > 2)

select buyPrice, productName

from CanceladosCaros

where buyPrice = (select max(buyPrice)

from CanceladosCaros)

Crear una vista que permita listar el total de unidades vendidas por cada

producto de la línea de automóviles (código y nombre), de los que se

hayan vendido menos de 900 unidades.

CREATE VIEW CarProductSales AS

SELECT

[Link],

[Link],

SUM([Link]) AS totalUnidadesVendidas

FROM

Products p

JOIN

OrderDetails od ON [Link] = [Link]

WHERE

[Link] = 'Classic Cars' -- Filtrar por la línea de producto "Classic Cars"

GROUP BY

[Link], [Link]

HAVING

SUM([Link]) < 900

ORDER BY

[Link]; ________________________________________________
Crear una vista que permita obtener un listado de los productos (número

y nombre) que tienen el mismo precio de compra de algún producto de

una línea diferente a la suya.

CREATE VIEW SamePriceDifferentLine AS

SELECT

[Link] AS productNumber,

[Link],

[Link]

FROM

Products p1

JOIN

Products p2 ON [Link] = [Link]

WHERE

[Link] <> [Link] and [Link] = [Link] -- Filtrar por líneas de producto diferentes

ORDER BY

[Link];

• Listar la cantidad disponible en stock de los productos generados por la

vista del Ejercicio 3

SELECT

[Link],

[Link],

[Link],

[Link]

FROM

SamePriceDifferentLine spd

JOIN

Products p ON [Link] = [Link];

• Listar los nombres de los vendedores que no han generado pedidos que
contienen productos de los generados por el Ejercicio 2.

-- Listar nombres de vendedores que no han generado pedidos con productos de CarProductSales

SELECT

[Link],

[Link]

FROM

Employees e

WHERE

NOT EXISTS (

-- Subconsulta para verificar si el vendedor ha generado pedidos con productos de CarProductSales

SELECT 1

FROM

Orders o

JOIN

OrderDetails od ON [Link] = [Link]

JOIN

CarProductSales cps ON [Link] = [Link]

WHERE

[Link] = [Link]

);

__________________________________________________________________

Consultas correlacionadas

Obtener una lista con código y nombre de los productos cuyo precio es mayor al precio promedio de los productos de su misma
línea.

SELECT

[Link],

[Link]

FROM

Products p
WHERE

[Link] > (

SELECT AVG([Link])

FROM Products p2

WHERE [Link] = [Link]

);

Ejercicio 6:

• Obtener una lista con el código de los productos incluidos en

pedidos en los que se solicitaron, en promedio, más del 50% de

las unidades disponibles.

SELECT

[Link]

FROM

OrderDetails od

JOIN

Products p ON [Link] = [Link]

WHERE

[Link] > 0.5 * [Link];

----------------------------------------------------------------------------------------------

Exists – Not Exists

► Obtener nombre de los empleados que nunca han atendido

clientes de una ciudad diferente de la suya.

SELECT

[Link],

[Link]

FROM

Employees e
WHERE

NOT EXISTS (

SELECT 1

FROM

Customers c

WHERE

[Link] = [Link]

AND [Link] <> [Link]

);

____________________________________________________________________________

• Ejercicio 1: Obtener un listado alfabético de las formas de gobierno que contienen la palabra “Republic”, determinando la cantidad de países
por cada una de dichas forma de gobierno.

SELECT formagobierno as Forma_de_gobierno, count(*) as Cantidad_de_paises

FROM pais

WHERE formagobierno ilike '%Republic%'

GROUP by formagobierno

ORDER by formagobierno asc

• Ejercicio 2: Obtener un listado alfabético de los países donde se habla tanto inglés como español (ambas).

SELECT distinct([Link]) as nombre_pais

FROM pais p

JOIN idiomapais i1 ON [Link] = [Link] AND [Link] = 'English'

JOIN idiomapais i2 ON [Link] = [Link] AND [Link] = 'Spanish'

ORDER BY [Link] asc


• Ejercicio 3: Obtener un listado alfabético de las ciudades que pertenecen a los países donde se habla francés como idioma oficial, pero que no
tuvieron año de independencia.

SELECT distinct ([Link])

FROM ciudad

JOIN pais ON [Link] = [Link]

JOIN idiomapais ON [Link] = [Link]

WHERE [Link] = 'French' AND [Link] = true AND [Link] IS NULL

ORDER by [Link]

• Ejercicio 4: Obtener un listado de las diferentes ciudades de América (Norte, Centro y Sur), cuya población está entre 2 y 6 millones de
personas. (No usar operadores relacionales).

SELECT distinct([Link]) as nombre_ciudad

FROM Ciudad

JOIN pais ON [Link] = [Link]

WHERE [Link] IN ('North America', 'South America', 'Central America')

AND [Link] between cast('2000000' as INT) AND cast('6000000' as INT)

• Ejercicio 5: Obtener un listado de los países donde la población promedio de sus ciudades es inferior a 100000.

SELECT [Link], round(avg([Link]):: numeric, 2) as Poblacion_Promedio

FROM pais p

JOIN ciudad c ON [Link] = [Link]

GROUP by [Link]

HAVING avg([Link]) < '100000'

ORDER by [Link]

• Ejercicio 6: Listar las diferentes formas de gobierno existentes en la base de datos (Ojo: Solo debe aparecer una vez cada una).

SELECT distinct(formagobierno) as Forma_de_gobierno

FROM pais

ORDER by formagobierno

• Ejercicio 8: Modificar el nombre del jefe de Estado de Estados Unidos por Joe Biden.

UPDATE pais

SET jefedeestado = 'Joe Biden'

WHERE codigo = 'USA'


• Ejercicio 9: Obtener un listado del nombre de los países, y su continente, donde la expectativa de vida está entre 40 y 60 años (OJO: no usar
operadores < o > para resolverlo.

SELECT nombre, continente

FROM pais

WHERE expectativadevida between '40' AND '60'

Ejercicio 1: Obtener un listado alfabético de los periodistas, que nacieron en el segundo semestre de 1988, y que escriben sobre alguna de las
siguientes áreas de conocimiento: Salud, Deporte o Educación. El listado debe mostrar: Apellido, Nombre, Cédula y Fecha de Nacimiento. (No
usar el operador or). [13 pts]

SELECT Apellido, Nombre, Cedula, Fecha_Nto

FROM periodista

WHERE Fecha_Nto = '1988-07-01'

AND areaconocimiento in (

SELECT Codigo

FROM areaconocimiento

WHERE Nombre in ('Salud', 'Deporte', 'Educación'))

ORDER by Apellido, Nombre

Ejercicio 2: Generar un listado con la cantidad de periodistas Activos, Retirados y Suspendidos (se calcula por cada uno). El listado debe mostrar
la descripción del estado. [13 pts]

SELECT [Link] as Estado, count(*) as Cantidad

FROM periodista p

WHERE estado in ('Activos', 'Retirados', 'Suspendidos')

INNER Join estado e on [Link] = [Link]


Group by [Link]

Ejercicio 3: Para aquellos periodistas de los que no se conoce su fecha de nacimiento, asignar la fecha: 1 de Enero de 1900. [13 pts]

UPDATE periodista

SET Fecha_Nto = '1900-01-01'

WHERE Fecha_Nto is null

Ejercicio 4: Obtener los apellidos y nombres de los periodistas asociados a áreas de conocimiento incluidas en las revistas Ingenium o
Humanitas. El listado debe mostrar además Nombre de la revista y Nombre del área de conocimiento, debe ordenarse por estos campos y luego
alfabético. (No usar el operador or). [13 pts]

SELECT [Link] as Revista, [Link] as Apellido_periodista, [Link] as Nombre_periodista, [Link] as Area_Conocimiento

FROM periodista p

INNER Join areaconocimiento ac on [Link] = [Link]

INNER Join revista r on [Link] = [Link]

WHERE [Link] in ('Ingenium', 'Humanitas')

ORDER by [Link], [Link], [Link], [Link]

Ejercicio 5: Generar un listado de con el número de cédula, fecha de nacimiento y descripción del estado de cada uno de los periodistas. El
listado debe estar ordenado de tal forma que muestre desde el más joven hasta el mayor. [13 pts]

SELECT [Link], p.Fecha_Nto, [Link] as Estado

FROM periodista p

INNER Join estado e on [Link] = [Link]

ORDER by p.Fecha_Nto asc

Ejercicio 6: Mostrar la información completa de los periodistas cuyo apellido contenga la letra K. [13 pts]

SELECT *

FROM periodista

WHERE Apellido ilike '%k%'

Ejercicio 7: Crear una vista que permita obtener el nombre, apellido y nombre del área de conocimiento del periodista de menor edad que se
encuentra como suspendido. (Usar consultas anidadas). [22 pts]

CREATE view periodista_menor_de_edad (

SELECT [Link], [Link], [Link]

FROM periodista p

INNER Join areaconocimiento ac on [Link] = [Link]


WHERE [Link] in(

SELECT Codigo

FROM Estado

WHERE Descripcion = 'Suspendido')

AND p.Fecha_Nto = (

SELECT min(Fecha_Nto)

FROM periodista

WHERE estado = (

SELECT Codigo

FROM Estado

WHERE Descripcion = 'Suspendido')

__________________________________________________________________________

/1: Buscar aquellos espectáculos contiene la palabra "festival", cuya fecha de inicio esté entre el 1 de julio de 2023 hasta el 31 de agosto de
2023. (No usar operadores al aplicar la condición sobre la fecha > , < , >= , <= , =) [10 pts]/

Select [Link]

from espectaculos e

where e.fecha_inicio between '2023-07-01' and '2023-08-31' and [Link] ilike 'festival%';

/*2: Generar un listado con la cantidad de espectáculos por cada ciudad (se espera que el listado incluya el nombre de la ciudad). [10 pts] */

select [Link], count(*)

from ciudades c inner join lugares l on c.ciudad_id=l.ciudad_id

inner join espectaculos_artistas ea on l.lugar_id=ea.lugar_id

group by [Link];
/3: Mostrar el id y nombre de los artistas que se han presentado en dos o más espectáculos. [15 pts]/

select a.artista_id, [Link]

from artistas a inner join espectaculos_artistas ea on a.artista_id = ea.artista_id

group by a.artista_id, [Link]

having count(*) >=2;

/*4: Obtener un listado alfabético con el nombre de los lugares se presentaron artistas de Folk. [10 pts] */

select distinct [Link]

from artistas a inner join espectaculos_artistas ea on a.artista_id = ea.artista_id

inner join lugares l on ea.lugar_id = l.lugar_id

where [Link] ilike 'folk'

order by [Link];

/*5: Generar un listado con el nombre de los artistas que se han presentado en las ciudades B y C.[15 pts] */

select [Link]

from artistas a inner join espectaculos_artistas ea on a.artista_id = ea.artista_id

inner join lugares l on ea.lugar_id = l.lugar_id

inner join ciudades c on l.ciudad_id =c.ciudad_id

where [Link]='B' and a.artista_id in (select a1.artista_id

from artistas a1 inner join espectaculos_artistas ea1 on a1.artista_id = ea1.artista_id

inner join lugares l1 on ea1.lugar_id = l1.lugar_id

inner join ciudades c1 on l1.ciudad_id =c1.ciudad_id

where [Link]='C');

/*6: Asignar “Parque local” como ubicación de los espectáculos que sean conciertos (que tengan esta palabra en el nombre). [10 pts] */

/7: Mostrar el nombre de las ciudades en las que nunca se ha presentado el artista cuyo nombre es “Grupo C”/

select nombre

from ciudades

where ciudad_id not in ( select c.ciudad_id

from artistas a inner join espectaculos_artistas ea on a.artista_id = ea.artista_id

inner join lugares l on ea.lugar_id = l.lugar_id

inner join ciudades c on l.ciudad_id =c.ciudad_id

where [Link]='Grupo C');

Consulta 1: Obtener la suma total de puntuaciones por desarrollador:


SELECT [Link] AS desarrollador, SUM([Link]) AS suma_puntuacion

FROM Desarrolladores d

INNER JOIN Juegos j ON d.desarrollador_id = j.desarrollador_id INNER JOIN Resenas r ON

j.juego_id = r.juego_id

GROUP BY [Link];

Consulta 2: Calcular el promedio de puntuaciones por género de juego:

SELECT [Link] AS genero, AVG([Link]) AS promedio_puntuacion

FROM Generos g LEFT JOIN Juegos j ON g.genero_id = j.genero_id LEFT JOIN Resenas r ON j.juego_id = r.juego_id

GROUP BY [Link];

Consulta 3: Encontrar la fecha de lanzamiento más reciente y antigua por plataforma: sql Copy code SELECT [Link] AS plataforma,
MAX(j.lanzamiento_fecha) AS lanzamiento_mas_reciente, MIN(j.lanzamiento_fecha) AS lanzamiento_mas_antiguo

FROM Plataformas p LEFT JOIN Juegos j ON p.plataforma_id = j.plataforma_id GROUP BY [Link];

También podría gustarte