Skip to content

Commit aac0bd0

Browse files
committed
task 43
1 parent 27dc7af commit aac0bd0

File tree

3 files changed

+78
-2
lines changed

3 files changed

+78
-2
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@
6666
40. Станция наблюдения за погодой 18 - [Weather Observation Station 18](./tasks/40.md)
6767
41. Станция наблюдения за погодой 19 - [Weather Observation Station 19](./tasks/41.md)
6868
42. Станция наблюдения за погодой 20 - [Weather Observation Station 20](./tasks/42.md)
69+
43. Таблица лидеров конкурса - [Contest Leaderboard](./tasks/43.md)
6970

7071

7172
## В процессе... , будет дополнено)

tasks/43.md

Lines changed: 61 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,80 @@
33
<img src="./art/43.png" alt="solution" >
44

55
#### 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!
67

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.
722

823

924
#### рус:
25+
Вы проделали такую большую работу, помогая Джулии с ее последним соревнованием по программированию, что она хочет,
26+
чтобы вы тоже поработали над этим!
27+
28+
Общий балл хакера — это сумма его максимальных баллов за все испытания. Напишите запрос для вывода hacker_id, имени
29+
и общей оценки хакеров в порядке убывания. Если несколько хакеров набрали одинаковый общий балл, отсортируйте
30+
результат по возрастанию hacker_id. Исключите всех хакеров с общим счетом из вашего результата.
1031

32+
Формат ввода
33+
34+
В следующих таблицах содержатся данные о соревнованиях:
35+
36+
Хакеры: hacker_id — это идентификатор хакера, а name — это имя хакера.
37+
38+
Заявки: submit_id — это идентификатор отправки, hacker_id — это идентификатор хакера, сделавшего отправку,
39+
challenge_id — это идентификатор задачи, к которой относится отправка, а score — это оценка отправки.
1140

1241

1342
#### код с коментариями:
1443
```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 /* отсортировать по .. */
1660
```
1761

1862
#### код для hackerrank:
1963
```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
2180
```
2281

2382

tasks/43.sql

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
SELECT
2+
h.hacker_id,
3+
h.name,
4+
sum(s.max_score) as total_score
5+
FROM Hackers h
6+
JOIN (
7+
SELECT
8+
hacker_id,
9+
challenge_id,
10+
MAX(score) as max_score
11+
FROM Submissions
12+
GROUP BY 1,2) s
13+
ON h.hacker_id = s.hacker_id
14+
GROUP BY 1,2
15+
HAVING sum(s.max_score) > 0
16+
ORDER BY sum(s.max_score) DESC, h.hacker_id ASC

0 commit comments

Comments
 (0)