Challenges SQL – Hacker Rank Solution

Challenges SQL - Hacker Rank Solution
Challenges SQL – Hacker Rank Solution

Problem

Julia asked her students to create some coding challenges. Write a query to print the hacker_idname, 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. 1458521004 cb4c077dd3 ScreenShot2016 03 21at6.06.54AM
  • Challenges: The challenge_id is the id of the challenge, and hacker_id is the id of the student who created the challenge. 1458521079 549341d9ec ScreenShot2016 03 21at6.07.03AM

Sample Input 0

Hackers Table: 1458521384 34c6866dae ScreenShot2016 03 21at6.07.15AM Challenges Table: 1458521410 befa8e1cd9 ScreenShot2016 03 21at6.07.25AM

Sample Output 0

21283 Angela 6
88255 Patrick 5
96196 Lisa 1

Sample Input 1

Hackers Table: 1458521469 87036deea3 ScreenShot2016 03 21at6.07.48AM Challenges Table: 1458521490 358215cf0b ScreenShot2016 03 21at6.07.58AM

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:
1458521677 fd04c384c0 ScreenShot2016 03 21at6.07.38AM
Students  and  both created  challenges, but the maximum number of challenges created is  so these students are excluded from the result.

For Sample Case 1, we can get the following details:
1458521836 24039e7523 ScreenShot2016 03 21at6.08.08AM
Students  and  both created  challenges. Because  is the maximum number of challenges created, these students are included in the result.



Challenges SQL – Hacker Rank Solution

SELECT H.HACKER_ID,
       H.NAME,
       COUNT(C.CHALLENGE_ID) AS TOTAL
FROM HACKERS H,
     CHALLENGES C
WHERE H.HACKER_ID=C.HACKER_ID
GROUP BY H.HACKER_ID,
         H.NAME
HAVING COUNT(C.CHALLENGE_ID) IN
  (SELECT MAX(TOTAL)
   FROM
     (SELECT COUNT(*) AS TOTAL
      FROM CHALLENGES
      GROUP BY HACKER_ID))
OR COUNT(C.CHALLENGE_ID) IN
  (SELECT TOTAL
   FROM
     (SELECT COUNT(*) AS TOTAL
      FROM CHALLENGES
      GROUP BY HACKER_ID)
   GROUP BY TOTAL
   HAVING COUNT(TOTAL)=1)
ORDER BY COUNT(C.CHALLENGE_ID) DESC, H.HACKER_ID;

Disclaimer: The above Problem (Challenges) generated by Hackerrank but the Solution is Provided by Chase2Learn. This tutorial is only for Educational and Learning purposes. Authority if any of the queries regarding this post or website fill the following contact form thank you.

Leave a Comment