We use cookies to ensure you have the best browsing experience on our website. Please read our cookie policy for more information about how we use cookies.
/*
w -> alias de la tabla Wands
wp -> alias de la tabla Wands_Properties
w2 ->
wp2 -> alias of Wands_Property in subquery
c -> Resultado de la Subconsulta
*/
-- Instrucciones
SELECT w.id, wp.age, w.coins_needed, w.power
FROM Wands w
-- JOIN que busca traer propiedades principales a la consulta principal
JOIN Wands_Property wp ON w.code=wp.code -- Usar codigos validos en wp
-- JOIN busca conectar cada varita con su propiedad para poder agrupar por edad y descartar las varitas malignas antes de calcular el minimo.
JOIN (
SELECT w2.power, wp2.age, MIN(w2.coins_needed) c
FROM Wands w2 JOIN Wands_Property wp2 ON w2.code=wp2.code
WHERE wp2.is_evil=0
GROUP BY w2.power, wp2.age -- Calcular el minimo, agrupando por el mismo poder y edad
)
m ON m.power=w.power AND m.age=wp.age AND m.c=w.coins_needed -- Unir la subconsulta con las tablas principales
WHERE wp.is_evil=0
ORDER BY w.power DESC, wp.age DESC; -- Ordenar primero el poder de manera desendente, si hay empate entonces la edad
Cookie support is required to access HackerRank
Seems like cookies are disabled on this browser, please enable them to open this website
Ollivander's Inventory
You are viewing a single comment's thread. Return to all comments →
/* w -> alias de la tabla Wands wp -> alias de la tabla Wands_Properties w2 -> wp2 -> alias of Wands_Property in subquery c -> Resultado de la Subconsulta */
-- Instrucciones
SELECT w.id, wp.age, w.coins_needed, w.power FROM Wands w
-- JOIN que busca traer propiedades principales a la consulta principal
JOIN Wands_Property wp ON w.code=wp.code -- Usar codigos validos en wp
-- JOIN busca conectar cada varita con su propiedad para poder agrupar por edad y descartar las varitas malignas antes de calcular el minimo.
JOIN ( SELECT w2.power, wp2.age, MIN(w2.coins_needed) c FROM Wands w2 JOIN Wands_Property wp2 ON w2.code=wp2.code WHERE wp2.is_evil=0 GROUP BY w2.power, wp2.age -- Calcular el minimo, agrupando por el mismo poder y edad )
m ON m.power=w.power AND m.age=wp.age AND m.c=w.coins_needed -- Unir la subconsulta con las tablas principales
WHERE wp.is_evil=0 ORDER BY w.power DESC, wp.age DESC; -- Ordenar primero el poder de manera desendente, si hay empate entonces la edad