Skip to content

Commit 98671e1

Browse files
authored
feat: add sql solution to lc problem: No.1811 (doocs#1102)
No.1811.Find Interview Candidates
1 parent 8f92875 commit 98671e1

File tree

3 files changed

+117
-2
lines changed

3 files changed

+117
-2
lines changed

solution/1800-1899/1811.Find Interview Candidates/README.md

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,45 @@ Quarz在连续5场竞赛中赢得了奖牌(190, 191, 192, 193, and 194), 所以
114114
<!-- 这里可写当前语言的特殊实现逻辑 -->
115115

116116
```sql
117-
117+
# Write your MySQL query statement below
118+
WITH
119+
S AS (
120+
SELECT contest_id, gold_medal AS user_id, 1 AS type
121+
FROM Contests
122+
UNION
123+
SELECT contest_id, silver_medal AS user_id, 2 AS type
124+
FROM Contests
125+
UNION
126+
SELECT contest_id, bronze_medal AS user_id, 3 AS type
127+
FROM Contests
128+
),
129+
T AS (
130+
SELECT
131+
user_id,
132+
(
133+
contest_id - row_number() OVER (
134+
PARTITION BY user_id
135+
ORDER BY contest_id
136+
)
137+
) AS diff
138+
FROM S
139+
),
140+
P AS (
141+
SELECT user_id
142+
FROM S
143+
WHERE type = 1
144+
GROUP BY user_id
145+
HAVING count(1) >= 3
146+
UNION
147+
SELECT DISTINCT user_id
148+
FROM T
149+
GROUP BY user_id, diff
150+
HAVING count(1) >= 3
151+
)
152+
SELECT name, mail
153+
FROM
154+
P AS p
155+
LEFT JOIN Users AS u ON p.user_id = u.user_id;
118156
```
119157

120158
<!-- tabs:end -->

solution/1800-1899/1811.Find Interview Candidates/README_EN.md

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,45 @@ Quarz won a medal in 5 consecutive contests (190, 191, 192, 193, and 194), so we
107107
### **SQL**
108108

109109
```sql
110-
110+
# Write your MySQL query statement below
111+
WITH
112+
S AS (
113+
SELECT contest_id, gold_medal AS user_id, 1 AS type
114+
FROM Contests
115+
UNION
116+
SELECT contest_id, silver_medal AS user_id, 2 AS type
117+
FROM Contests
118+
UNION
119+
SELECT contest_id, bronze_medal AS user_id, 3 AS type
120+
FROM Contests
121+
),
122+
T AS (
123+
SELECT
124+
user_id,
125+
(
126+
contest_id - row_number() OVER (
127+
PARTITION BY user_id
128+
ORDER BY contest_id
129+
)
130+
) AS diff
131+
FROM S
132+
),
133+
P AS (
134+
SELECT user_id
135+
FROM S
136+
WHERE type = 1
137+
GROUP BY user_id
138+
HAVING count(1) >= 3
139+
UNION
140+
SELECT DISTINCT user_id
141+
FROM T
142+
GROUP BY user_id, diff
143+
HAVING count(1) >= 3
144+
)
145+
SELECT name, mail
146+
FROM
147+
P AS p
148+
LEFT JOIN Users AS u ON p.user_id = u.user_id;
111149
```
112150

113151
<!-- tabs:end -->
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
# Write your MySQL query statement below
2+
WITH
3+
S AS (
4+
SELECT contest_id, gold_medal AS user_id, 1 AS type
5+
FROM Contests
6+
UNION
7+
SELECT contest_id, silver_medal AS user_id, 2 AS type
8+
FROM Contests
9+
UNION
10+
SELECT contest_id, bronze_medal AS user_id, 3 AS type
11+
FROM Contests
12+
),
13+
T AS (
14+
SELECT
15+
user_id,
16+
(
17+
contest_id - row_number() OVER (
18+
PARTITION BY user_id
19+
ORDER BY contest_id
20+
)
21+
) AS diff
22+
FROM S
23+
),
24+
P AS (
25+
SELECT user_id
26+
FROM S
27+
WHERE type = 1
28+
GROUP BY user_id
29+
HAVING count(1) >= 3
30+
UNION
31+
SELECT DISTINCT user_id
32+
FROM T
33+
GROUP BY user_id, diff
34+
HAVING count(1) >= 3
35+
)
36+
SELECT name, mail
37+
FROM
38+
P AS p
39+
LEFT JOIN Users AS u ON p.user_id = u.user_id;

0 commit comments

Comments
 (0)