You are on page 1of 20

Sub-Consultas

Una subconsulta es una consulta que aparece dentro de


otra consulta o subconsultas, en la lista de selección
SELECT o en la clausula WHERE o HAVING, originalmente
no se podían incluir en la lista de selección.
Una subconsulta se denomina también consulta o
selección interna, mientras que las instrucciones que
tienen la subconsulta es conocida como consulta o
selección externa.
Sub-Consultas
Ejercicios de Clase:
• Utilizando sub-consultas correlacionadas, presentar por cada
categoría el producto que mas se vendió de esa categoría.

• Presentar la lista de productos que no han sido vendidos en


dicho país, utilice como referencia el país de la tabla pedidos.
Esta consulta se llama “Productos no vendidos por pais”
(SubConsulta en el from)
Ejemplos por ubicacion
Sub-consultas en la sección de WHERE
Utilizando ALL

SELECT s1 FROM t1
WHERE s1 > ALL (SELECT s1 FROM t2);

Sentencias que retornan el mismo resultado

SELECT s1 FROM t1 WHERE s1 <> ALL (SELECT s1 FROM t2);


SELECT s1 FROM t1 WHERE s1 NOT IN (SELECT s1 FROM t2);
Sub-consultas en la sección de WHERE
SELECT * FROM t1
WHERE column1 = (SELECT column1 FROM t2);
SELECT column1 FROM t1
WHERE column1 = (SELECT MAX(column2) FROM t2);
SELECT * FROM t1
WHERE column1 = (SELECT COUNT(column1) FROM t1);
Utilizando ANY/SOME/IN/ALL
SELECT s1 FROM t1
WHERE s1 > ANY (SELECT s1 FROM t2);
SELECT s1 FROM t1
WHERE s1 > ALL (SELECT s1 FROM t2);
SELECT * FROM t1
WHERE column1 IN (SELECT column1 FROM t2);
Sub-consultas en la sección de WHERE
EJEMPLOS:

SELECT * FROM productos p


WHERE p.PrecioUnidad > ANY (SELECT d.PrecioUnidad FROM
"detalles de pedidos" d WHERE d.Descuento = 0.25)

SELECT * FROM productos p


WHERE p.PrecioUnidad > ALL (SELECT d.PrecioUnidad FROM
"detalles de pedidos" d WHERE d.Descuento = 0.25)
Sub-Consultas
Subconsultas en la cláusula FROM

SELECT ... FROM (subquery) [AS] name ...

SELECT AVG(sum_column1) FROM


(SELECT SUM(column1) AS sum_column1 FROM t1
GROUP BY column1) AS t1;
Sub-Consultas
Subconsultas correlacionadas
Una subconsulta correlacionada es una subconsulta que contiene
una referencia a una tabla que también aparece en la consulta
exterior.
Por ejemplo:
SELECT * FROM t1 WHERE column1 = ANY (SELECT column1 FROM
t2 WHERE t2.column2 = t1.column2);

SELECT column1 FROM t1 AS x


WHERE x.column1 = (SELECT column1 FROM t2 AS x
WHERE x.column1 = (SELECT column1 FROM t3
WHERE x.column2 = t3.column1));
Ejercicio #1
Ejercicio #2
Sub-Consulta #1
Ejercicio #3
Sub-Consulta #2

Esta es la consulta principal


que relacionará ambas sub-
consultas

Consulta final,
combinando y
relacionando ambas
sub-consultas
Ejercicio #4 - Sub en el from
• Los paréntesis en color Verde indican la sub-consulta “OrdenesHN”

SELECT OrdenesHN.OrderID, OrdenesHN.CustomerID,


Customers.CompanyName, OrdenesHN.EmployeeID,
OrdenesHN.Total, OrdenesHN.Ciudad, OrdenesHN.Pais
FROM (SELECT Orders.OrderID, Orders.CustomerID, Orders.EmployeeID,
[Order Details].UnitPrice * [Order Details].Quantity AS Total,
'SAN PEDRO SULA' AS Ciudad, 'HN' AS Pais
FROM Orders INNER JOIN [Order Details] ON Orders.OrderID = [Order
Details].OrderID) AS OrdenesHN
INNER JOIN
Customers ON OrdenesHN.CustomerID = Customers.CustomerID
Ejercicios SubConsultas – Sub consulta en sección del select
Ejercicio #5
Cantidad de Las columnas
Cliente (Nombre de Empresa) Ordenes Una subconsulta que busque la cantidad de
remarcadas con
ordenes de cada cliente de la consulta principal.
amarillo son las
que serán creadas
Ejercicio #6 por medio de
Fecha Ultima subconsulta en
Empleado (Nombre + Apellido) Orden Una subconsulta que busque la ultima fecha de Select
ordenes de un empleado especifico

Ejercicio #7
Cliente Total Comprado Una subconsulta que sume Cantidad * Precio
del detalle de las ordenes de de cada cliente de
la consulta principal.
Sub-Consultas – Versión en Select – Utilizando
instrucción TOP
Ejercicio #8 – Ciudad del cliente
Ciudad Categorías que mas se Cliente que mas
compro 1996 compro 1996
Ejercicio – Ventas por Año de cada vendedor
Ejercicio #9 – Ejercicio de sub-consulta

Empleado (Nombre Completo) Ventas Ventas Ventas Total


1996 1997 1998

Consulta principal
tabla de empleados Sub consultas por vendedor(Empleado)
Sub-Consultas – Versión en Select – Utilizando
instrucción TOP
Ejercicio #10 – Empleado
Empleados (Nombre Categorías que mas se Cliente que mas
y apellido) compro 1996 compro 1996

Consulta principal
tabla de empleados Sub consultas por vendedor(Empleado)
Sub-Consultas – Versión en Select
Ejercicio #11
Sub-consulta

Para la consulta principal debe mostrar el nombre de la categoría, la consulta principal muestra únicamente 1 vez cada
categoría.

Categoría (CategoryName) Total Vendido Empleados Total Vendido Empleados Total Vendido Empleados
1,2 y 3 - 1996 1,2 y 3 - 1997 1,2 y 3 - 1998
Tabla Consulta Principal: Consideraciones:
- Categories Utilizan Sub-consulta para cada una de las columnas de los años,
Total Vendido es el resultado de multiplicar UnitPrice * Quantity
Tablas relacionadas en subconsulta:
- Products
- Order Details
- Orders (Esta tabla contienen el campo EmployeeID a filtrar en la sub-consulta)
Ejercicios SubConsultas
Sub consultas en sección de Where

Liste las ordenes de los 3 clientes que mas ha comprado en la empresa:


Ejercicio #12
Orden Fecha Nombre de Cliente
89 Registros

La subconsulta del where debe generar un listado de los 3


códigos de clientes que han hecho las mayores totales de
Ejercicio #13 compras de la empresa
Codigo
Categoria Producto Descripcion

La subconsulta del where debe generar un listado de los 3


códigos de categorías que han hecho las mayores totales de
ventas de la empresa
Ejercicio de Clase –
Sub-Consultas –Versión en From

Ejercicio #14 – Ejercicio en clase

Ciudad Categorías que mas se Cliente que mas


compro 1996 compro 1996
Ejercicio de Clase – Sub- Consulta
Ejercicio #15 – Ejercicio en clase
Nombre Vendedor Total Vendedor % de Venta

Ejemplo:
Juan 1000 16% (Total Vendedor / Total Vendido Empresa) * 100
Maria 3000 49%
Pedro 1500 25%
Juana 600 10%
6100 100% Ventas del Año 1997

You might also like