Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 以下解决方案的反例?_Sql - Fatal编程技术网

Sql 以下解决方案的反例?

Sql 以下解决方案的反例?,sql,Sql,我最近完成了一个编码挑战,提示如下: 黑客的总分是他们所有人的最高分数之和 挑战之一。编写查询以打印黑客id、姓名和密码 黑客的总分按分数递减顺序排列。如果更多 不止一个黑客获得了相同的总分,然后按 提升黑客id。从中排除总分为0的所有黑客 你的结果 下表包含竞赛数据: 黑客:黑客id是黑客的id,name是黑客的名字 黑客的名字 提交:提交id是提交的id,黑客id 是提交申请的黑客的id,挑战id是 提交所属挑战的id,分数为 提交的分数 我的解决方案通过了测试用例,但我花了很多次迭代才达到

我最近完成了一个编码挑战,提示如下:

黑客的总分是他们所有人的最高分数之和 挑战之一。编写查询以打印黑客id、姓名和密码 黑客的总分按分数递减顺序排列。如果更多 不止一个黑客获得了相同的总分,然后按 提升黑客id。从中排除总分为0的所有黑客 你的结果

下表包含竞赛数据:

黑客:黑客id是黑客的id,name是黑客的名字 黑客的名字

提交:提交id是提交的id,黑客id 是提交申请的黑客的id,挑战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;
这是我的

select T.hacker_id, T.name , sum(T.max_score) sum_score from (
Select h.hacker_id, name , challenge_id, max(score) max_score from Hackers h 
inner join submissions s on h.hacker_id = s.hacker_id
group by h.hacker_id, name , challenge_id) as T
group by T.hacker_id, T.name
having sum(T.max_score) > 0
order by sum_score desc , T.hacker_id

这段MySQL代码成功地运行了测试用例

select m.id, h.name, m.total from 
    (select x.hacker_id id, sum(x.max_score) total from
        (select h.hacker_id, s.challenge_id, max(s.score) as max_score from submissions as s 
        join hackers as h on h.hacker_id = s.hacker_id
        group by h.hacker_id, s.challenge_id) as x
    group by x.hacker_id
    having total <> 0)as m, 
hackers as h
where m.id = h.hacker_id
order by m.total desc, m.id;


你的问题不清楚。。有一个合适的数据样本。。还有被解释的。。结果假设得分为非负。这可能是合理的,但没有明确说明。欢迎来到stackoverflow,您的问题的质量将反映在如何回答问题上,请参考一个好的问题,它将清楚地显示您遇到的问题,并包括错误消息或问题。还包括您使用过的代码以及试图解决问题的任何尝试,包括您认为失败的地方。我们掌握的信息越多,我们就越有可能提供帮助。请保持你的问题简洁,一次只提一个问题。
select m.id, h.name, m.total from 
    (select x.hacker_id id, sum(x.max_score) total from
        (select h.hacker_id, s.challenge_id, max(s.score) as max_score from submissions as s 
        join hackers as h on h.hacker_id = s.hacker_id
        group by h.hacker_id, s.challenge_id) as x
    group by x.hacker_id
    having total <> 0)as m, 
hackers as h
where m.id = h.hacker_id
order by m.total desc, m.id;