【发布时间】:2018-08-30 18:07:53
【问题描述】:
我最近完成了一个编码挑战,提示如下:
一个黑客的总分是他们所有的最高分的总和 的挑战。编写查询以打印hacker_id、名称和 黑客总得分按得分降序排列。如果更多 比一个黑客获得相同的总分,然后将结果排序 上升的hacker_id。排除所有总分为 0 的黑客 你的结果。
下表包含比赛数据:
Hackers:hacker_id是黑客的id,name是名字 黑客。
Submissions:submission_id是提交的id,hacker_id 是提交的黑客的 id,challenge_id 是 提交所属挑战的id,得分为 提交的分数。
我的解决方案通过了测试用例,但我花了很多次迭代才到达那里。
我感觉可能存在使用我的解决方案无法通过的极端情况/特定输入,但我无法弄清楚。
有任何猜测或反例吗?
我的解决方案:
Select ID, Name, sum(maxscore) as tot From
(Select ID, Name, chal, Max(score) as maxscore From
(Select Submissions.hacker_id as ID, Hackers.name as Name, Submissions.score as score, Submissions.challenge_id as chal
From Submissions
Inner Join Hackers on Submissions.hacker_id = Hackers.hacker_id
Where Submissions.score <> 0)
Group by chal, ID, Name)
Group by ID, Name Order by tot desc, ID asc;
【问题讨论】:
-
你的问题不清楚..有适当的数据样本..和预期的..结果
-
您假设分数为非负数。这可能是合理的,但没有明确说明。
-
欢迎来到stackoverflow,您的问题的质量将反映它的回答方式,请参考how to ask a good question 一个好的问题将清楚地显示您遇到的问题并包含错误消息或问题。还包括您使用过的代码以及尝试解决问题的任何尝试,包括您认为失败的地方。我们掌握的信息越多,我们就越有可能提供帮助。请保持问题简洁,一次只回答一个问题。
标签: sql