diff --git a/solution/2100-2199/2159.Order Two Columns Independently/README.md b/solution/2100-2199/2159.Order Two Columns Independently/README.md index 6af4cd2940d05..50b8d1ae3bb3f 100644 --- a/solution/2100-2199/2159.Order Two Columns Independently/README.md +++ b/solution/2100-2199/2159.Order Two Columns Independently/README.md @@ -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); ``` diff --git a/solution/2100-2199/2159.Order Two Columns Independently/README_EN.md b/solution/2100-2199/2159.Order Two Columns Independently/README_EN.md index 38e24ccbcb426..226374c1abc29 100644 --- a/solution/2100-2199/2159.Order Two Columns Independently/README_EN.md +++ b/solution/2100-2199/2159.Order Two Columns Independently/README_EN.md @@ -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); ``` diff --git a/solution/2100-2199/2159.Order Two Columns Independently/Solution.sql b/solution/2100-2199/2159.Order Two Columns Independently/Solution.sql new file mode 100644 index 0000000000000..bf13f56a29c5f --- /dev/null +++ b/solution/2100-2199/2159.Order Two Columns Independently/Solution.sql @@ -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); diff --git a/solution/2200-2299/2228.Users With Two Purchases Within Seven Days/README.md b/solution/2200-2299/2228.Users With Two Purchases Within Seven Days/README.md index 6947e66b9a90c..537d4cfc7de3b 100644 --- a/solution/2200-2299/2228.Users With Two Purchases Within Seven Days/README.md +++ b/solution/2200-2299/2228.Users With Two Purchases Within Seven Days/README.md @@ -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; ``` diff --git a/solution/2200-2299/2228.Users With Two Purchases Within Seven Days/README_EN.md b/solution/2200-2299/2228.Users With Two Purchases Within Seven Days/README_EN.md index 66043d4306404..9d0797cc6723c 100644 --- a/solution/2200-2299/2228.Users With Two Purchases Within Seven Days/README_EN.md +++ b/solution/2200-2299/2228.Users With Two Purchases Within Seven Days/README_EN.md @@ -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; ``` diff --git a/solution/2200-2299/2228.Users With Two Purchases Within Seven Days/Solution.sql b/solution/2200-2299/2228.Users With Two Purchases Within Seven Days/Solution.sql new file mode 100644 index 0000000000000..25ae200f68266 --- /dev/null +++ b/solution/2200-2299/2228.Users With Two Purchases Within Seven Days/Solution.sql @@ -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; diff --git a/solution/2200-2299/2298.Tasks Count in the Weekend/README.md b/solution/2200-2299/2298.Tasks Count in the Weekend/README.md index 600e8577c51b7..451251cce848d 100644 --- a/solution/2200-2299/2298.Tasks Count in the Weekend/README.md +++ b/solution/2200-2299/2298.Tasks Count in the Weekend/README.md @@ -70,6 +70,10 @@ Task 6 是在周日提交的。 +**方法一:WEEKDAY() 函数** + +`WEEKDAY()` 函数返回日期的工作日编号,从 0 开始,0 表示星期一,1 表示星期二,以此类推,6 表示星期日。 + ### **SQL** @@ -77,7 +81,11 @@ Task 6 是在周日提交的。 ```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; ``` diff --git a/solution/2200-2299/2298.Tasks Count in the Weekend/README_EN.md b/solution/2200-2299/2298.Tasks Count in the Weekend/README_EN.md index d1e3ef5ca1e3b..7be04e22b1340 100644 --- a/solution/2200-2299/2298.Tasks Count in the Weekend/README_EN.md +++ b/solution/2200-2299/2298.Tasks Count in the Weekend/README_EN.md @@ -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; ``` diff --git a/solution/2200-2299/2298.Tasks Count in the Weekend/Solution.sql b/solution/2200-2299/2298.Tasks Count in the Weekend/Solution.sql new file mode 100644 index 0000000000000..51675c2d6b3fc --- /dev/null +++ b/solution/2200-2299/2298.Tasks Count in the Weekend/Solution.sql @@ -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; diff --git a/solution/2300-2399/2308.Arrange Table by Gender/README.md b/solution/2300-2399/2308.Arrange Table by Gender/README.md index 680f034e90989..9cac0239b86f6 100644 --- a/solution/2300-2399/2308.Arrange Table by Gender/README.md +++ b/solution/2300-2399/2308.Arrange Table by Gender/README.md @@ -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; ``` diff --git a/solution/2300-2399/2308.Arrange Table by Gender/README_EN.md b/solution/2300-2399/2308.Arrange Table by Gender/README_EN.md index 0a314236bca02..5ac5876d6d93f 100644 --- a/solution/2300-2399/2308.Arrange Table by Gender/README_EN.md +++ b/solution/2300-2399/2308.Arrange Table by Gender/README_EN.md @@ -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; ``` diff --git a/solution/2300-2399/2308.Arrange Table by Gender/Solution.sql b/solution/2300-2399/2308.Arrange Table by Gender/Solution.sql new file mode 100644 index 0000000000000..e8760fbb44b27 --- /dev/null +++ b/solution/2300-2399/2308.Arrange Table by Gender/Solution.sql @@ -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;