SQL - Subconsulta con MIN

 
Vista:
sin imagen de perfil

Subconsulta con MIN

Publicado por Sebastián Arévalo (1 intervención) el 28/08/2018 20:46:09
Buenas, estoy estudiando subconsultas en la base AdventureWorks2014 y me surgió una duda. Básicamente, no entiendo la lógica de la siguiente subconsulta. Para que me muestre el precio mínimo de cada subcategoría es necesario hacer un self join de la tabla Production.Product, de otra forma tiraría error o, a lo sumo corrigiendo un par de cosas, solamente el precio mínimo de entre todas las subcategorías. ¿Cómo estaría operando ese self join?

¡Muchas gracias!

-- Mostrar el producto más barato de cada subcategoría, la subcategoría, código de producto y el precio de lista más barato ordenado por subcategoría.

1
2
3
4
5
6
select p.Name as Nombre, p.ProductSubcategoryID, s.Name as Subcategoría, p.ListPrice as Precio
from Production.Product as p
join Production.ProductSubcategory as s on p.ProductSubcategoryID = s.ProductSubcategoryID
where p.ListPrice = (select MIN(ListPrice) from Production.Product as p2
					 where p2.ProductSubcategoryID = p.ProductSubcategoryID)
Order by p.ProductSubcategoryID
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias
Val: 2.012
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Subconsulta con MIN

Publicado por Isaias (1507 intervenciones) el 29/08/2018 18:51:46
Veamos, como dijo Jack el destripador, vamos por parte

Si usted ejecuta:
1
select ProductSubcategoryID, MIN(ListPrice) from Production.Product as p2 group by ProductSubcategoryID
Obtendra el precio MINIMO por cada ProductSubcateroryID, ¿de acuerdo?

Ahora bien, si usted ya tiene un query que le permite obtener de Production.Product y este lo esta uniendo a Production.ProductSubcategory, etonces lo UNICO que le hace falta es el precio MINIMO, por eso, hay un WHERE p.ListPrice = (select MIN(ListPrice)..., que le une ese query al precio minimo por subcateroria, ¿cierto?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar