Skip to content

Commit 7ec3290

Browse files
committed
task 56
1 parent 5690269 commit 7ec3290

File tree

4 files changed

+119
-2
lines changed

4 files changed

+119
-2
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@
7979
53. Нарисуй треугольник 1 - [Draw The Triangle 1](./tasks/53.md)
8080
54. Нарисуй треугольник 2 - [Draw The Triangle 2](./tasks/54.md)
8181
55. Печать простых чисел - [Print Prime Numbers](./tasks/55.md)
82+
56. 15 дней изучения SQL - [15 Days of Learning SQL](./tasks/56.md)
8283

8384

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

tasks/56.md

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

55
#### eng:
6+
Julia conducted a days of learning SQL contest. The start date of the contest was March 01, 2016 and the end date was March 15, 2016.
67

8+
Write a query to print total number of unique hackers who made at least submission each day (starting on the first
9+
day of the contest), and find the hacker_id and name of the hacker who made maximum number of submissions each day.
10+
If more than one such hacker has a maximum number of submissions, print the lowest hacker_id. The query should print
11+
this information for each day of the contest, sorted by the date.
712

813

914
#### рус:
15+
Юлия провела конкурс дней обучения SQL. Дата начала конкурса 01.03.2016, дата окончания 15.03.2016.
1016

17+
Напишите запрос для вывода общего количества уникальных хакеров, которые делали как минимум сабмиты каждый день
18+
(начиная с первого дня конкурса), и найдите hacker_id и имя хакера, который сделал максимальное количество сабмитов
19+
каждый день. Если более одного такого хакера имеют максимальное количество представлений, выведите наименьший
20+
hacker_id. Запрос должен вывести эту информацию для каждого дня конкурса, отсортированного по дате.
1121

1222

1323
#### код с коментариями:
1424
```sql
15-
25+
SELECT
26+
b.submission_date, COALESCE(a.contSub,0), b.id, c.name
27+
FROM (
28+
SELECT o.submission_date, MIN(o.hacker_id) AS id
29+
FROM (
30+
SELECT n.submission_date, n.hacker_id,COUNT(n.submission_id)
31+
FROM Submissions n
32+
GROUP BY submission_date, hacker_id
33+
HAVING COUNT(submission_id)>= ALL(
34+
SELECT COUNT(m.submission_id)
35+
FROM Submissions m
36+
GROUP BY m.submission_date, m.hacker_id
37+
HAVING m.submission_date=n.submission_date
38+
)
39+
) AS o
40+
GROUP BY submission_date
41+
) AS b
42+
LEFT JOIN (
43+
SELECT aa.submission_date, COUNT(DISTINCT aa.hacker_id) AS contSub
44+
FROM Submissions AS aa
45+
WHERE aa.submission_date='2016-03-01'
46+
OR submission_date<ALL(
47+
SELECT bb.submission_date
48+
FROM (
49+
SELECT tdy.hacker_id, tdy.submission_date, ytd.submission_date AS SubmittedYtd
50+
FROM Submissions tdy LEFT JOIN Submissions ytd
51+
ON DATE_ADD(tdy.submission_date, INTERVAL -1 DAY)= ytd.submission_date
52+
AND ytd.hacker_id=tdy.hacker_id
53+
) AS bb
54+
WHERE aa.hacker_id=bb.hacker_id AND bb.submission_date<> STR_TO_DATE('2016-03-01', '%Y-%m-%d') AND bb.SubmittedYtd IS NULL
55+
)
56+
GROUP BY aa.submission_date
57+
) AS a
58+
ON a.submission_date=b.submission_date
59+
JOIN Hackers c ON b.id=c.hacker_id
60+
ORDER BY a.submission_date ASC
1661
```
1762

1863
#### код для hackerrank:
1964
```sql
20-
65+
SELECT
66+
b.submission_date, COALESCE(a.contSub,0), b.id, c.name
67+
FROM (
68+
SELECT o.submission_date, MIN(o.hacker_id) AS id
69+
FROM (
70+
SELECT n.submission_date, n.hacker_id,COUNT(n.submission_id)
71+
FROM Submissions n
72+
GROUP BY submission_date, hacker_id
73+
HAVING COUNT(submission_id)>= ALL(
74+
SELECT COUNT(m.submission_id)
75+
FROM Submissions m
76+
GROUP BY m.submission_date, m.hacker_id
77+
HAVING m.submission_date=n.submission_date
78+
)
79+
) AS o
80+
GROUP BY submission_date
81+
) AS b
82+
LEFT JOIN (
83+
SELECT aa.submission_date, COUNT(DISTINCT aa.hacker_id) AS contSub
84+
FROM Submissions AS aa
85+
WHERE aa.submission_date='2016-03-01'
86+
OR submission_date<ALL(
87+
SELECT bb.submission_date
88+
FROM (
89+
SELECT tdy.hacker_id, tdy.submission_date, ytd.submission_date AS SubmittedYtd
90+
FROM Submissions tdy LEFT JOIN Submissions ytd
91+
ON DATE_ADD(tdy.submission_date, INTERVAL -1 DAY)= ytd.submission_date
92+
AND ytd.hacker_id=tdy.hacker_id
93+
) AS bb
94+
WHERE aa.hacker_id=bb.hacker_id AND bb.submission_date<> STR_TO_DATE('2016-03-01', '%Y-%m-%d') AND bb.SubmittedYtd IS NULL
95+
)
96+
GROUP BY aa.submission_date
97+
) AS a
98+
ON a.submission_date=b.submission_date
99+
JOIN Hackers c ON b.id=c.hacker_id
100+
ORDER BY a.submission_date ASC
21101
```
22102

23103

tasks/56.sql

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
SELECT
2+
b.submission_date, COALESCE(a.contSub,0), b.id, c.name
3+
FROM (
4+
SELECT o.submission_date, MIN(o.hacker_id) AS id
5+
FROM (
6+
SELECT n.submission_date, n.hacker_id,COUNT(n.submission_id)
7+
FROM Submissions n
8+
GROUP BY submission_date, hacker_id
9+
HAVING COUNT(submission_id)>= ALL(
10+
SELECT COUNT(m.submission_id)
11+
FROM Submissions m
12+
GROUP BY m.submission_date, m.hacker_id
13+
HAVING m.submission_date=n.submission_date
14+
)
15+
) AS o
16+
GROUP BY submission_date
17+
) AS b
18+
LEFT JOIN (
19+
SELECT aa.submission_date, COUNT(DISTINCT aa.hacker_id) AS contSub
20+
FROM Submissions AS aa
21+
WHERE aa.submission_date='2016-03-01'
22+
OR submission_date<ALL(
23+
SELECT bb.submission_date
24+
FROM (
25+
SELECT tdy.hacker_id, tdy.submission_date, ytd.submission_date AS SubmittedYtd
26+
FROM Submissions tdy LEFT JOIN Submissions ytd
27+
ON DATE_ADD(tdy.submission_date, INTERVAL -1 DAY)= ytd.submission_date
28+
AND ytd.hacker_id=tdy.hacker_id
29+
) AS bb
30+
WHERE aa.hacker_id=bb.hacker_id AND bb.submission_date<> STR_TO_DATE('2016-03-01', '%Y-%m-%d') AND bb.SubmittedYtd IS NULL
31+
)
32+
GROUP BY aa.submission_date
33+
) AS a
34+
ON a.submission_date=b.submission_date
35+
JOIN Hackers c ON b.id=c.hacker_id
36+
ORDER BY a.submission_date ASC

tasks/art/56.png

117 KB
Loading

0 commit comments

Comments
 (0)