|
3 | 3 | <img src="./art/43.png" alt="solution" >
|
4 | 4 |
|
5 | 5 | #### eng:
|
| 6 | +You did such a great job helping Julia with her last coding contest challenge that she wants you to work on this one, too! |
6 | 7 |
|
| 8 | +The total score of a hacker is the sum of their maximum scores for all of the challenges. Write a query to print |
| 9 | +the hacker_id, name, and total score of the hackers ordered by the descending score. If more than one hacker |
| 10 | +achieved the same total score, then sort the result by ascending hacker_id. Exclude all hackers with a total score |
| 11 | +of from your result. |
| 12 | + |
| 13 | +Input Format |
| 14 | + |
| 15 | +The following tables contain contest data: |
| 16 | + |
| 17 | +Hackers: The hacker_id is the id of the hacker, and name is the name of the hacker. |
| 18 | + |
| 19 | +Submissions: The submission_id is the id of the submission, hacker_id is the id of the hacker who made the |
| 20 | +submission, challenge_id is the id of the challenge for which the submission belongs to, and score is the score of |
| 21 | +the submission. |
7 | 22 |
|
8 | 23 |
|
9 | 24 | #### рус:
|
| 25 | +Вы проделали такую большую работу, помогая Джулии с ее последним соревнованием по программированию, что она хочет, |
| 26 | +чтобы вы тоже поработали над этим! |
| 27 | + |
| 28 | +Общий балл хакера — это сумма его максимальных баллов за все испытания. Напишите запрос для вывода hacker_id, имени |
| 29 | +и общей оценки хакеров в порядке убывания. Если несколько хакеров набрали одинаковый общий балл, отсортируйте |
| 30 | +результат по возрастанию hacker_id. Исключите всех хакеров с общим счетом из вашего результата. |
10 | 31 |
|
| 32 | +Формат ввода |
| 33 | + |
| 34 | +В следующих таблицах содержатся данные о соревнованиях: |
| 35 | + |
| 36 | +Хакеры: hacker_id — это идентификатор хакера, а name — это имя хакера. |
| 37 | + |
| 38 | +Заявки: submit_id — это идентификатор отправки, hacker_id — это идентификатор хакера, сделавшего отправку, |
| 39 | +challenge_id — это идентификатор задачи, к которой относится отправка, а score — это оценка отправки. |
11 | 40 |
|
12 | 41 |
|
13 | 42 | #### код с коментариями:
|
14 | 43 | ```sql
|
15 |
| - |
| 44 | +SELECT /* выбрать данные */ |
| 45 | + h.hacker_id, /* столбец */ |
| 46 | + h.name, /* столбец */ |
| 47 | + sum(s.max_score) as total_score /* столбец */ |
| 48 | +FROM Hackers h /* из таблицы */ |
| 49 | +JOIN ( /* объединить */ |
| 50 | + SELECT /* выбрать данные */ |
| 51 | + hacker_id, /* столбец */ |
| 52 | + challenge_id, /* столбец */ |
| 53 | + MAX(score) as max_score /* столбец с псевдонимом */ |
| 54 | + FROM Submissions /* из таблицы */ |
| 55 | + GROUP BY 1,2) s /* сгруппировать по 1-му и 2-му столбцу */ |
| 56 | +ON h.hacker_id = s.hacker_id /* по номеру хакера */ |
| 57 | +GROUP BY 1,2 /* сгруппировать по 1-му и 2-му столбцу */ |
| 58 | +HAVING sum(s.max_score) > 0 /* где сумма больше нулая */ |
| 59 | +ORDER BY sum(s.max_score) DESC, h.hacker_id ASC /* отсортировать по .. */ |
16 | 60 | ```
|
17 | 61 |
|
18 | 62 | #### код для hackerrank:
|
19 | 63 | ```sql
|
20 |
| - |
| 64 | +SELECT |
| 65 | + h.hacker_id, |
| 66 | + h.name, |
| 67 | + sum(s.max_score) as total_score |
| 68 | +FROM Hackers h |
| 69 | +JOIN ( |
| 70 | + SELECT |
| 71 | + hacker_id, |
| 72 | + challenge_id, |
| 73 | + MAX(score) as max_score |
| 74 | + FROM Submissions |
| 75 | + GROUP BY 1,2) s |
| 76 | +ON h.hacker_id = s.hacker_id |
| 77 | +GROUP BY 1,2 |
| 78 | +HAVING sum(s.max_score) > 0 |
| 79 | +ORDER BY sum(s.max_score) DESC, h.hacker_id ASC |
21 | 80 | ```
|
22 | 81 |
|
23 | 82 |
|
|
0 commit comments