Hacker Rank SQL

Challenges Solution

Hello Friends in this article i am gone to share Hacker Rank SQL Solutions with you | Challenges Solution


Also Visit:ย  Ollivanderโ€™s Inventory Solution


 

Problem

Julia asked her students to create some coding challenges. Write a query to print theย hacker_id,ย name, and the total number of challenges created by each student. Sort your results by the total number of challenges in descending order. If more than one student created the same number of challenges, then sort the result byย hacker_id. If more than one student created the same number of challenges and the count is less than the maximum number of challenges created, then exclude those students from the result.

Input Format

The following tables contain challenge data:

  • Hackers:ย Theย hacker_idย is the id of the hacker, andย nameย is the name of the hacker.ย 
  • Challenges:ย Theย challenge_idย is the id of the challenge, andย hacker_idย is the id of the student who created the challenge.ย 

Sample Input 0

  • Hackers Table
  • Challenges Table

Sample Output 0

21283 Angela 6
88255 Patrick 5
96196 Lisa 1

Sample Input 1

  • Hackers Table
  • Challenges Table

Sample Output 1

12299 Rose 6
34856 Angela 6
79345 Frank 4
80491 Patrick 3
81041 Lisa 1

Explanation

Forย Sample Case 0, we can get the following details:

Studentsย 5077ย andย 62743ย both createdย 4ย challenges, but the maximum number of challenges created isย 6ย so these students are excluded from the result.

Forย Sample Case 1, we can get the following details:

Studentsย 12299ย andย 34856ย both createdย 6ย challenges. Becauseย 6ย is the maximum number of challenges created, these students are included in the result.

Solution โ€“ Challenges

MySQL Code
SELECT h.hacker_id, 
       h.name, 
       COUNT(c.challenge_id) AS c_count
FROM Hackers h
JOIN Challenges c ON c.hacker_id = h.hacker_id
GROUP BY h.hacker_id, h.name
HAVING c_count = 
    (SELECT COUNT(c2.challenge_id) AS c_max
     FROM challenges as c2 
     GROUP BY c2.hacker_id 
     ORDER BY c_max DESC limit 1)
OR c_count IN 
    (SELECT DISTINCT c_compare AS c_unique
     FROM (SELECT h2.hacker_id, 
                  h2.name, 
                  COUNT(challenge_id) AS c_compare
           FROM Hackers h2
           JOIN Challenges c ON c.hacker_id = h2.hacker_id
           GROUP BY h2.hacker_id, h2.name) counts
     GROUP BY c_compare
     HAVING COUNT(c_compare) = 1)

ORDER BY c_count DESC, h.hacker_id;

 

 

Disclaimer: The above Problems are generated by Hacker Rank but the Solutions are Provided by NYANDER.COM. All Hacker Rank SQL Solutions Shared only for Educational and Learning Purpose.