Skip to content

feat: add sql solutions to lc problems: No.2159,2228,2308 #1126

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jul 2, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,24 @@ Data 表:
<!-- 这里可写当前语言的特殊实现逻辑 -->

```sql

# Write your MySQL query statement below
WITH
S AS (
SELECT
first_col,
row_number() OVER (ORDER BY first_col) AS rk
FROM Data
),
T AS (
SELECT
second_col,
row_number() OVER (ORDER BY second_col DESC) AS rk
FROM Data
)
SELECT first_col, second_col
FROM
S
JOIN T USING (rk);
```

<!-- tabs:end -->
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,24 @@ Data table:
### **SQL**

```sql

# Write your MySQL query statement below
WITH
S AS (
SELECT
first_col,
row_number() OVER (ORDER BY first_col) AS rk
FROM Data
),
T AS (
SELECT
second_col,
row_number() OVER (ORDER BY second_col DESC) AS rk
FROM Data
)
SELECT first_col, second_col
FROM
S
JOIN T USING (rk);
```

<!-- tabs:end -->
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Write your MySQL query statement below
WITH
S AS (
SELECT
first_col,
row_number() OVER (ORDER BY first_col) AS rk
FROM Data
),
T AS (
SELECT
second_col,
row_number() OVER (ORDER BY second_col DESC) AS rk
FROM Data
)
SELECT first_col, second_col
FROM
S
JOIN T USING (rk);
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,24 @@ Purchases 表:
<!-- 这里可写当前语言的特殊实现逻辑 -->

```sql

# Write your MySQL query statement below
WITH
t AS (
SELECT
user_id,
datediff(
purchase_date,
lag(purchase_date, 1) OVER (
PARTITION BY user_id
ORDER BY purchase_date
)
) AS d
FROM Purchases
)
SELECT DISTINCT user_id
FROM t
WHERE d <= 7
ORDER BY user_id;
```

<!-- tabs:end -->
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,24 @@ User 7 had two purchases on the same day so we add their ID.
### **SQL**

```sql

# Write your MySQL query statement below
WITH
t AS (
SELECT
user_id,
datediff(
purchase_date,
lag(purchase_date, 1) OVER (
PARTITION BY user_id
ORDER BY purchase_date
)
) AS d
FROM Purchases
)
SELECT DISTINCT user_id
FROM t
WHERE d <= 7
ORDER BY user_id;
```

<!-- tabs:end -->
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Write your MySQL query statement below
WITH
t AS (
SELECT
user_id,
datediff(
purchase_date,
lag(purchase_date, 1) OVER (
PARTITION BY user_id
ORDER BY purchase_date
)
) AS d
FROM Purchases
)
SELECT DISTINCT user_id
FROM t
WHERE d <= 7
ORDER BY user_id;
10 changes: 9 additions & 1 deletion solution/2200-2299/2298.Tasks Count in the Weekend/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -70,14 +70,22 @@ Task 6 是在周日提交的。

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

**方法一:WEEKDAY() 函数**

`WEEKDAY()` 函数返回日期的工作日编号,从 0 开始,0 表示星期一,1 表示星期二,以此类推,6 表示星期日。

<!-- tabs:start -->

### **SQL**

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

```sql

# Write your MySQL query statement below
SELECT
sum(weekday(submit_date) IN (5, 6)) AS weekend_cnt,
sum(weekday(submit_date) NOT IN (5, 6)) AS working_cnt
FROM Tasks;
```

<!-- tabs:end -->
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,11 @@ Task 6 was submitted on Sunday.
### **SQL**

```sql

# Write your MySQL query statement below
SELECT
sum(weekday(submit_date) IN (5, 6)) AS weekend_cnt,
sum(weekday(submit_date) NOT IN (5, 6)) AS working_cnt
FROM Tasks;
```

<!-- tabs:end -->
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Write your MySQL query statement below
SELECT
sum(weekday(submit_date) IN (5, 6)) AS weekend_cnt,
sum(weekday(submit_date) NOT IN (5, 6)) AS working_cnt
FROM Tasks;
20 changes: 19 additions & 1 deletion solution/2300-2399/2308.Arrange Table by Gender/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,25 @@ Genders 表:
<!-- 这里可写当前语言的特殊实现逻辑 -->

```sql

# Write your MySQL query statement below
WITH
t AS (
SELECT
*,
rank() OVER (
PARTITION BY gender
ORDER BY user_id
) AS rk1,
CASE
WHEN gender = 'female' THEN 0
WHEN gender = 'other' THEN 1
ELSE 2
END AS rk2
FROM Genders
)
SELECT user_id, gender
FROM t
ORDER BY rk1, rk2;
```

<!-- tabs:end -->
20 changes: 19 additions & 1 deletion solution/2300-2399/2308.Arrange Table by Gender/README_EN.md
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,25 @@ Note that the IDs of each gender are sorted in ascending order.
### **SQL**

```sql

# Write your MySQL query statement below
WITH
t AS (
SELECT
*,
rank() OVER (
PARTITION BY gender
ORDER BY user_id
) AS rk1,
CASE
WHEN gender = 'female' THEN 0
WHEN gender = 'other' THEN 1
ELSE 2
END AS rk2
FROM Genders
)
SELECT user_id, gender
FROM t
ORDER BY rk1, rk2;
```

<!-- tabs:end -->
19 changes: 19 additions & 0 deletions solution/2300-2399/2308.Arrange Table by Gender/Solution.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Write your MySQL query statement below
WITH
t AS (
SELECT
*,
rank() OVER (
PARTITION BY gender
ORDER BY user_id
) AS rk1,
CASE
WHEN gender = 'female' THEN 0
WHEN gender = 'other' THEN 1
ELSE 2
END AS rk2
FROM Genders
)
SELECT user_id, gender
FROM t
ORDER BY rk1, rk2;