[英]How to solve this query using With clause and sub-query?
我正在尝试从hackerrank挑战中练习,但无法理解查询。 这是哈利波特和他的朋友们在奥利凡德和罗恩的问题,最终取代了查理的旧魔杖。
赫敏决定最好的选择方法是确定购买每根具有高功率和年龄的非邪恶魔杖所需的最少金帆船数量。 编写一个查询以打印 Ron 感兴趣的魔杖的 id、年龄、所需硬币和功率,按功率降序排列。 如果多个魔杖具有相同的威力,则按年龄降序对结果进行排序。
这是问题的链接-https://www.hackerrank.com/challenges/harry-potter-and-wands/problem?isFullScreen=true
这是我无法理解的解决方案
SELECT w.id, wp.age, w.coins_needed, w.power
FROM wands w INNER JOIN wands_property wp ON w.code = wp.code
WHERE wp.is_evil = 0 AND w.coins_needed = (SELECT MIN(w2.coins_needed)
FROM wands w2 INNER JOIN wands_property wp2 ON w2.code = wp2.code
WHERE w2.code = w.code AND wp2.is_evil = 0 AND w2.power = w.power)
ORDER BY w.power DESC, wp.age DESC;
(SELECT w.id, wp.age, w.coins_needed, w.power
FROM wands w INNER JOIN wands_property wp ON w.code = wp.code
WHERE wp.is_evil = 0)
也请使用 with 子句解释它
我非常感谢你的建议
只需找到最便宜的魔杖并按功率和年龄订购即可。
select id
, age
, coins_needed
, power
from (
SELECT w.id
, wp.age
, w.coins_needed
, w.power
, ROW_NUMBER() over(partition by wp.age,w.power order by w.coins_needed) orderNum
FROM wands w
INNER JOIN wands_property wp ON w.code = wp.code
WHERE wp.is_evil = 0
) a
where a.orderNum = 1
order by power desc, age desc
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.