涉及挑战数量的SQL问题

时间:2018-10-16 20:32:31

标签: mysql

以下问题基于HackerRank问题here。内容如下:

  

Julia要求她的学生提出一些编码挑战。写一个   查询以打印hacker_id,名称和挑战总数   由每个学生创建。将结果按总数排序   降序挑战。如果有多个学生创建了   相同数量的挑战,然后按hacker_id对结果进行排序。如果更多   比一个学生创造相同数量的挑战和数量   小于创建的最大挑战数,然后排除   结果中的那些学生。

在挑战中,我提交了以下内容,但由于某种原因,存在语法错误。有什么问题吗?

 select h.hacker_id
     , h.name
     , count(c.challenge_id) count1 
  from hackers h 
  join challenges c
    on c.hacker_id = h.hacker_id 
 where h.hacker_id not in  
          (select hh.hacker_id 
             from hackers hh 
             join challenges cc
               on cc.hacker_id = hh.hacker_id 
             join 
                ( select hhh.hacker_id
                       , count(ccc.challenge_id) count2 
                    from hackers hhh 
                    join challenges ccc
                      on ccc.hacker_id = hhh.hacker_id 
                   group 
                      by hhh.hacker_id 
                  having count(ccc.challenge_id) < 
                              (select max(count2) 
                                 from 
                                    ( select count(cc.challenge_id) count2 
                                        from hackers hh 
                                        join challenges cc
                                          on hh.hacker_id = cc.hacker_id
                                    ) a
                               ) b
                ) t 
               on t.hacker_id <> hh.hacker_id 
          ) c 
      group 
         by h.hacker_id
          , h.name
      order 
         by count(c.challenge_id)
          , h.hacker_id desc

1 个答案:

答案 0 :(得分:0)

我无法评论其后的有效性,但至少在语法上是有效的...

String