Skip to content

Commit 75533d8

Browse files
committed
task 52
1 parent 887781d commit 75533d8

File tree

4 files changed

+98
-4
lines changed

4 files changed

+98
-4
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@
7575
49. Отчет - [The Report](./tasks/49.md)
7676
50. Лучшие конкуренты - [Top Competitors](./tasks/50.md)
7777
51. Инвентарь Олливандера - [Ollivander's Inventory](./tasks/51.md)
78+
52. Проблемы - [Challenges](./tasks/52.md)
7879

7980

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

tasks/52.md

Lines changed: 68 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,85 @@
33
<img src="./art/52.png" alt="solution" >
44

55
#### eng:
6-
6+
Julia asked her students to create some coding challenges. Write a query to print the hacker_id, name, and the total
7+
number of challenges created by each student. Sort your results by the total number of challenges in descending
8+
order. If more than one student created the same number of challenges, then sort the result by hacker_id. If more
9+
than one student created the same number of challenges and the count is less than the maximum number of challenges
10+
created, then exclude those students from the result.
711

812

913
#### рус:
10-
14+
Джулия попросила своих учеников создать несколько задач по программированию. Напишите запрос, чтобы вывести
15+
hacker_id, имя и общее количество задач, созданных каждым учеником. Отсортируйте результаты по общему количеству
16+
задач в порядке убывания. Если более одного ученика создали одинаковое количество задач, отсортируйте результат по
17+
hacker_id. Если более одного учащегося создали одинаковое количество задач, а их количество меньше максимального
18+
количества созданных задач, то эти учащиеся исключаются из результатов.
1119

1220

1321
#### код с коментариями:
1422
```sql
15-
23+
WITH count_challenge AS ( /* создадим временную таблицу */
24+
SELECT /* выбрать данные */
25+
Hackers.hacker_id, /* столбец */
26+
name, /* столбец */
27+
COUNT(challenge_id) AS num_of_chal /* столбец */
28+
FROM Hackers, Challenges /* из таблицы */
29+
WHERE Hackers.hacker_id = Challenges.hacker_id /* где условие */
30+
GROUP BY Hackers.hacker_id, name), /* сгруппировать по столбцу */
31+
max_challenge AS (
32+
SELECT /* выбрать данные */
33+
MAX(count_challenge.num_of_chal) AS max_count /* столбец */
34+
FROM count_challenge), /* из таблицы */
35+
count_num_challenge AS (
36+
SELECT /* выбрать данные */
37+
DISTINCT num_of_chal, /* столбец */
38+
COUNT(num_of_chal) AS count_num /* столбец */
39+
FROM count_challenge /* из таблицы */
40+
GROUP BY num_of_chal /* сгруппировать по столбцу */
41+
)
42+
43+
SELECT /* выбрать данные */
44+
Hackers.hacker_id, /* столбец */
45+
Hackers.name, /* столбец */
46+
cc.num_of_chal /* столбец */
47+
FROM Hackers, count_challenge cc, count_num_challenge cnc, max_challenge /* из таблицы */
48+
WHERE Hackers.hacker_id = cc.hacker_id && /* где условие */
49+
cc.num_of_chal = cnc.num_of_chal &&
50+
(count_num > 1 && cnc.num_of_chal = max_challenge.max_count || count_num = 1)
51+
ORDER BY num_of_chal DESC, hacker_id; /* отсортировть по */
1652
```
1753

1854
#### код для hackerrank:
1955
```sql
20-
56+
WITH count_challenge AS (
57+
SELECT
58+
Hackers.hacker_id,
59+
name,
60+
COUNT(challenge_id) AS num_of_chal
61+
FROM Hackers, Challenges
62+
WHERE Hackers.hacker_id = Challenges.hacker_id
63+
GROUP BY Hackers.hacker_id, name),
64+
max_challenge AS (
65+
SELECT
66+
MAX(count_challenge.num_of_chal) AS max_count
67+
FROM count_challenge),
68+
count_num_challenge AS (
69+
SELECT
70+
DISTINCT num_of_chal,
71+
COUNT(num_of_chal) AS count_num
72+
FROM count_challenge
73+
GROUP BY num_of_chal
74+
)
75+
76+
SELECT
77+
Hackers.hacker_id,
78+
Hackers.name,
79+
cc.num_of_chal
80+
FROM Hackers, count_challenge cc, count_num_challenge cnc, max_challenge
81+
WHERE Hackers.hacker_id = cc.hacker_id &&
82+
cc.num_of_chal = cnc.num_of_chal &&
83+
(count_num > 1 && cnc.num_of_chal = max_challenge.max_count || count_num = 1)
84+
ORDER BY num_of_chal DESC, hacker_id;
2185
```
2286

2387

tasks/52.sql

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
WITH count_challenge AS (
2+
SELECT
3+
Hackers.hacker_id,
4+
name,
5+
COUNT(challenge_id) AS num_of_chal
6+
FROM Hackers, Challenges
7+
WHERE Hackers.hacker_id = Challenges.hacker_id
8+
GROUP BY Hackers.hacker_id, name),
9+
max_challenge AS (
10+
SELECT
11+
MAX(count_challenge.num_of_chal) AS max_count
12+
FROM count_challenge),
13+
count_num_challenge AS (
14+
SELECT
15+
DISTINCT num_of_chal,
16+
COUNT(num_of_chal) AS count_num
17+
FROM count_challenge
18+
GROUP BY num_of_chal
19+
)
20+
21+
SELECT
22+
Hackers.hacker_id,
23+
Hackers.name,
24+
cc.num_of_chal
25+
FROM Hackers, count_challenge cc, count_num_challenge cnc, max_challenge
26+
WHERE Hackers.hacker_id = cc.hacker_id &&
27+
cc.num_of_chal = cnc.num_of_chal &&
28+
(count_num > 1 && cnc.num_of_chal = max_challenge.max_count || count_num = 1)
29+
ORDER BY num_of_chal DESC, hacker_id;

tasks/art/52.png

54.8 KB
Loading

0 commit comments

Comments
 (0)