Skip to content

Commit 4ad4708

Browse files
authored
feat: add sql solutions to lc problems: No.2159,2228,2308 (doocs#1126)
* No.2159.Order Two Columns Independently * No.2228.Users With Two Purchases Within Seven Days * No.2308.Arrange Table by Gender
1 parent e2dc306 commit 4ad4708

File tree

12 files changed

+184
-8
lines changed

12 files changed

+184
-8
lines changed

solution/2100-2199/2159.Order Two Columns Independently/README.md

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,24 @@ Data 表:
6666
<!-- 这里可写当前语言的特殊实现逻辑 -->
6767

6868
```sql
69-
69+
# Write your MySQL query statement below
70+
WITH
71+
S AS (
72+
SELECT
73+
first_col,
74+
row_number() OVER (ORDER BY first_col) AS rk
75+
FROM Data
76+
),
77+
T AS (
78+
SELECT
79+
second_col,
80+
row_number() OVER (ORDER BY second_col DESC) AS rk
81+
FROM Data
82+
)
83+
SELECT first_col, second_col
84+
FROM
85+
S
86+
JOIN T USING (rk);
7087
```
7188

7289
<!-- tabs:end -->

solution/2100-2199/2159.Order Two Columns Independently/README_EN.md

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,24 @@ Data table:
5959
### **SQL**
6060

6161
```sql
62-
62+
# Write your MySQL query statement below
63+
WITH
64+
S AS (
65+
SELECT
66+
first_col,
67+
row_number() OVER (ORDER BY first_col) AS rk
68+
FROM Data
69+
),
70+
T AS (
71+
SELECT
72+
second_col,
73+
row_number() OVER (ORDER BY second_col DESC) AS rk
74+
FROM Data
75+
)
76+
SELECT first_col, second_col
77+
FROM
78+
S
79+
JOIN T USING (rk);
6380
```
6481

6582
<!-- tabs:end -->
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# Write your MySQL query statement below
2+
WITH
3+
S AS (
4+
SELECT
5+
first_col,
6+
row_number() OVER (ORDER BY first_col) AS rk
7+
FROM Data
8+
),
9+
T AS (
10+
SELECT
11+
second_col,
12+
row_number() OVER (ORDER BY second_col DESC) AS rk
13+
FROM Data
14+
)
15+
SELECT first_col, second_col
16+
FROM
17+
S
18+
JOIN T USING (rk);

solution/2200-2299/2228.Users With Two Purchases Within Seven Days/README.md

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,24 @@ Purchases 表:
6868
<!-- 这里可写当前语言的特殊实现逻辑 -->
6969

7070
```sql
71-
71+
# Write your MySQL query statement below
72+
WITH
73+
t AS (
74+
SELECT
75+
user_id,
76+
datediff(
77+
purchase_date,
78+
lag(purchase_date, 1) OVER (
79+
PARTITION BY user_id
80+
ORDER BY purchase_date
81+
)
82+
) AS d
83+
FROM Purchases
84+
)
85+
SELECT DISTINCT user_id
86+
FROM t
87+
WHERE d <= 7
88+
ORDER BY user_id;
7289
```
7390

7491
<!-- tabs:end -->

solution/2200-2299/2228.Users With Two Purchases Within Seven Days/README_EN.md

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,24 @@ User 7 had two purchases on the same day so we add their ID.
6262
### **SQL**
6363

6464
```sql
65-
65+
# Write your MySQL query statement below
66+
WITH
67+
t AS (
68+
SELECT
69+
user_id,
70+
datediff(
71+
purchase_date,
72+
lag(purchase_date, 1) OVER (
73+
PARTITION BY user_id
74+
ORDER BY purchase_date
75+
)
76+
) AS d
77+
FROM Purchases
78+
)
79+
SELECT DISTINCT user_id
80+
FROM t
81+
WHERE d <= 7
82+
ORDER BY user_id;
6683
```
6784

6885
<!-- tabs:end -->
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# Write your MySQL query statement below
2+
WITH
3+
t AS (
4+
SELECT
5+
user_id,
6+
datediff(
7+
purchase_date,
8+
lag(purchase_date, 1) OVER (
9+
PARTITION BY user_id
10+
ORDER BY purchase_date
11+
)
12+
) AS d
13+
FROM Purchases
14+
)
15+
SELECT DISTINCT user_id
16+
FROM t
17+
WHERE d <= 7
18+
ORDER BY user_id;

solution/2200-2299/2298.Tasks Count in the Weekend/README.md

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,14 +70,22 @@ Task 6 是在周日提交的。
7070

7171
<!-- 这里可写通用的实现逻辑 -->
7272

73+
**方法一:WEEKDAY() 函数**
74+
75+
`WEEKDAY()` 函数返回日期的工作日编号,从 0 开始,0 表示星期一,1 表示星期二,以此类推,6 表示星期日。
76+
7377
<!-- tabs:start -->
7478

7579
### **SQL**
7680

7781
<!-- 这里可写当前语言的特殊实现逻辑 -->
7882

7983
```sql
80-
84+
# Write your MySQL query statement below
85+
SELECT
86+
sum(weekday(submit_date) IN (5, 6)) AS weekend_cnt,
87+
sum(weekday(submit_date) NOT IN (5, 6)) AS working_cnt
88+
FROM Tasks;
8189
```
8290

8391
<!-- tabs:end -->

solution/2200-2299/2298.Tasks Count in the Weekend/README_EN.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,11 @@ Task 6 was submitted on Sunday.
7171
### **SQL**
7272

7373
```sql
74-
74+
# Write your MySQL query statement below
75+
SELECT
76+
sum(weekday(submit_date) IN (5, 6)) AS weekend_cnt,
77+
sum(weekday(submit_date) NOT IN (5, 6)) AS working_cnt
78+
FROM Tasks;
7579
```
7680

7781
<!-- tabs:end -->
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# Write your MySQL query statement below
2+
SELECT
3+
sum(weekday(submit_date) IN (5, 6)) AS weekend_cnt,
4+
sum(weekday(submit_date) NOT IN (5, 6)) AS working_cnt
5+
FROM Tasks;

solution/2300-2399/2308.Arrange Table by Gender/README.md

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,25 @@ Genders 表:
8080
<!-- 这里可写当前语言的特殊实现逻辑 -->
8181

8282
```sql
83-
83+
# Write your MySQL query statement below
84+
WITH
85+
t AS (
86+
SELECT
87+
*,
88+
rank() OVER (
89+
PARTITION BY gender
90+
ORDER BY user_id
91+
) AS rk1,
92+
CASE
93+
WHEN gender = 'female' THEN 0
94+
WHEN gender = 'other' THEN 1
95+
ELSE 2
96+
END AS rk2
97+
FROM Genders
98+
)
99+
SELECT user_id, gender
100+
FROM t
101+
ORDER BY rk1, rk2;
84102
```
85103

86104
<!-- tabs:end -->

solution/2300-2399/2308.Arrange Table by Gender/README_EN.md

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,25 @@ Note that the IDs of each gender are sorted in ascending order.
7575
### **SQL**
7676

7777
```sql
78-
78+
# Write your MySQL query statement below
79+
WITH
80+
t AS (
81+
SELECT
82+
*,
83+
rank() OVER (
84+
PARTITION BY gender
85+
ORDER BY user_id
86+
) AS rk1,
87+
CASE
88+
WHEN gender = 'female' THEN 0
89+
WHEN gender = 'other' THEN 1
90+
ELSE 2
91+
END AS rk2
92+
FROM Genders
93+
)
94+
SELECT user_id, gender
95+
FROM t
96+
ORDER BY rk1, rk2;
7997
```
8098

8199
<!-- tabs:end -->
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# Write your MySQL query statement below
2+
WITH
3+
t AS (
4+
SELECT
5+
*,
6+
rank() OVER (
7+
PARTITION BY gender
8+
ORDER BY user_id
9+
) AS rk1,
10+
CASE
11+
WHEN gender = 'female' THEN 0
12+
WHEN gender = 'other' THEN 1
13+
ELSE 2
14+
END AS rk2
15+
FROM Genders
16+
)
17+
SELECT user_id, gender
18+
FROM t
19+
ORDER BY rk1, rk2;

0 commit comments

Comments
 (0)