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.
- Prepare
- SQL
- Basic Join
- Ollivander's Inventory
- Discussions
Ollivander's Inventory
Ollivander's Inventory
Sort by
recency
|
2070 Discussions
|
Please Login in order to post a comment
/* 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
select id, age, coins_needed, power from( select w.id, wp.age, w.coins_needed, w.power , ROW_NUMBER() over(partition by power,age order by w.coins_needed) as ranking from wands w join wands_property wp on w.code = wp.code where wp.is_evil = 0) where ranking = 1 order by power desc, age desc;
SELECT id, age, coins_needed, power FROM ( SELECT id, age, coins_needed, power, ROW_NUMBER() OVER(PARTITION BY age, power ORDER BY coins_needed) rk FROM Wands w JOIN Wands_Property wp ON w.code=wp.code WHERE is_evil=0 ) WHERE rk=1 ORDER BY power DESC, age DESC ;