From 48697ccec5ee6964f3710d823da8d9701f75d8ed Mon Sep 17 00:00:00 2001 From: yanglbme Date: Sat, 8 Jul 2023 23:06:49 +0800 Subject: [PATCH] feat: update sql solutions to lc problems --- .../0183.Customers Who Never Order/README.md | 15 ++++++----- .../README_EN.md | 15 ++++++----- .../Solution.sql | 5 ++-- .../0184.Department Highest Salary/README.md | 13 +++------- .../README_EN.md | 13 +++------- .../Solution.sql | 13 +++------- .../README.md | 15 ++++------- .../README_EN.md | 15 ++++------- .../Solution.sql | 15 ++++------- .../0196.Delete Duplicate Emails/README.md | 26 +++++++++++++++---- .../0196.Delete Duplicate Emails/README_EN.md | 26 +++++++++++++++---- .../0196.Delete Duplicate Emails/Solution.sql | 8 ++---- .../0197.Rising Temperature/README.md | 12 ++++----- .../0197.Rising Temperature/README_EN.md | 12 ++++----- .../0197.Rising Temperature/Solution.sql | 12 ++++----- 15 files changed, 108 insertions(+), 107 deletions(-) diff --git a/solution/0100-0199/0183.Customers Who Never Order/README.md b/solution/0100-0199/0183.Customers Who Never Order/README.md index 6b1603d444f42..3a28fa4a6c2ca 100644 --- a/solution/0100-0199/0183.Customers Who Never Order/README.md +++ b/solution/0100-0199/0183.Customers Who Never Order/README.md @@ -57,22 +57,23 @@ ### **SQL** ```sql -SELECT Name AS Customers +# Write your MySQL query statement below +SELECT name AS Customers FROM Customers WHERE id NOT IN ( - SELECT CustomerId + SELECT customerId FROM Orders ); ``` ```sql -SELECT - c.Name AS Customers +# Write your MySQL query statement below +SELECT name AS Customers FROM - customers AS c - LEFT JOIN orders AS o ON c.Id = o.CustomerId -WHERE o.CustomerId IS NULL; + Customers AS c + LEFT JOIN Orders AS o ON c.id = o.customerId +WHERE o.id IS NULL; ``` diff --git a/solution/0100-0199/0183.Customers Who Never Order/README_EN.md b/solution/0100-0199/0183.Customers Who Never Order/README_EN.md index e3a5d1fece8c8..0ebc0446fe689 100644 --- a/solution/0100-0199/0183.Customers Who Never Order/README_EN.md +++ b/solution/0100-0199/0183.Customers Who Never Order/README_EN.md @@ -78,22 +78,23 @@ Orders table: ### **SQL** ```sql -SELECT Name AS Customers +# Write your MySQL query statement below +SELECT name AS Customers FROM Customers WHERE id NOT IN ( - SELECT CustomerId + SELECT customerId FROM Orders ); ``` ```sql -SELECT - c.Name AS Customers +# Write your MySQL query statement below +SELECT name AS Customers FROM - customers AS c - LEFT JOIN orders AS o ON c.Id = o.CustomerId -WHERE o.CustomerId IS NULL; + Customers AS c + LEFT JOIN Orders AS o ON c.id = o.customerId +WHERE o.id IS NULL; ``` diff --git a/solution/0100-0199/0183.Customers Who Never Order/Solution.sql b/solution/0100-0199/0183.Customers Who Never Order/Solution.sql index 7059a5662d174..be068668244bc 100644 --- a/solution/0100-0199/0183.Customers Who Never Order/Solution.sql +++ b/solution/0100-0199/0183.Customers Who Never Order/Solution.sql @@ -1,7 +1,8 @@ -SELECT Name AS Customers +# Write your MySQL query statement below +SELECT name AS Customers FROM Customers WHERE id NOT IN ( - SELECT CustomerId + SELECT customerId FROM Orders ); diff --git a/solution/0100-0199/0184.Department Highest Salary/README.md b/solution/0100-0199/0184.Department Highest Salary/README.md index 60cf628539464..099b9d8a2f001 100644 --- a/solution/0100-0199/0184.Department Highest Salary/README.md +++ b/solution/0100-0199/0184.Department Highest Salary/README.md @@ -122,23 +122,18 @@ WHERE ```sql # Write your MySQL query statement below WITH - t AS ( + T AS ( SELECT - departmentId, - name, - salary, + *, rank() OVER ( PARTITION BY departmentId ORDER BY salary DESC ) AS rk FROM Employee ) -SELECT - d.name AS Department, - t.name AS Employee, - salary AS Salary +SELECT d.name AS Department, t.name AS Employee, salary AS Salary FROM - t + T AS t JOIN Department AS d ON t.departmentId = d.id WHERE rk = 1; ``` diff --git a/solution/0100-0199/0184.Department Highest Salary/README_EN.md b/solution/0100-0199/0184.Department Highest Salary/README_EN.md index 557a0542fbf2d..9b86c3efb22dd 100644 --- a/solution/0100-0199/0184.Department Highest Salary/README_EN.md +++ b/solution/0100-0199/0184.Department Highest Salary/README_EN.md @@ -120,23 +120,18 @@ WHERE ```sql # Write your MySQL query statement below WITH - t AS ( + T AS ( SELECT - departmentId, - name, - salary, + *, rank() OVER ( PARTITION BY departmentId ORDER BY salary DESC ) AS rk FROM Employee ) -SELECT - d.name AS Department, - t.name AS Employee, - salary AS Salary +SELECT d.name AS Department, t.name AS Employee, salary AS Salary FROM - t + T AS t JOIN Department AS d ON t.departmentId = d.id WHERE rk = 1; ``` diff --git a/solution/0100-0199/0184.Department Highest Salary/Solution.sql b/solution/0100-0199/0184.Department Highest Salary/Solution.sql index 061db77da0d02..19119aafe1bd4 100644 --- a/solution/0100-0199/0184.Department Highest Salary/Solution.sql +++ b/solution/0100-0199/0184.Department Highest Salary/Solution.sql @@ -1,21 +1,16 @@ # Write your MySQL query statement below WITH - t AS ( + T AS ( SELECT - departmentId, - name, - salary, + *, rank() OVER ( PARTITION BY departmentId ORDER BY salary DESC ) AS rk FROM Employee ) -SELECT - d.name AS Department, - t.name AS Employee, - salary AS Salary +SELECT d.name AS Department, t.name AS Employee, salary AS Salary FROM - t + T AS t JOIN Department AS d ON t.departmentId = d.id WHERE rk = 1; diff --git a/solution/0100-0199/0185.Department Top Three Salaries/README.md b/solution/0100-0199/0185.Department Top Three Salaries/README.md index 8f021bb403e1f..45f8098d6d7e3 100644 --- a/solution/0100-0199/0185.Department Top Three Salaries/README.md +++ b/solution/0100-0199/0185.Department Top Three Salaries/README.md @@ -125,25 +125,20 @@ WHERE ```sql # Write your MySQL query statement below WITH - t AS ( + T AS ( SELECT - departmentId, - name, - salary, + *, dense_rank() OVER ( PARTITION BY departmentId ORDER BY salary DESC ) AS rk FROM Employee ) -SELECT - d.name AS Department, - t.name AS Employee, - salary AS Salary +SELECT d.name AS Department, t.name AS Employee, salary AS Salary FROM - t + T AS t JOIN Department AS d ON t.departmentId = d.id -WHERE rk < 4; +WHERE rk <= 3; ``` diff --git a/solution/0100-0199/0185.Department Top Three Salaries/README_EN.md b/solution/0100-0199/0185.Department Top Three Salaries/README_EN.md index 6a8df3cf0bd74..2d98ad3e68370 100644 --- a/solution/0100-0199/0185.Department Top Three Salaries/README_EN.md +++ b/solution/0100-0199/0185.Department Top Three Salaries/README_EN.md @@ -121,25 +121,20 @@ WHERE ```sql # Write your MySQL query statement below WITH - t AS ( + T AS ( SELECT - departmentId, - name, - salary, + *, dense_rank() OVER ( PARTITION BY departmentId ORDER BY salary DESC ) AS rk FROM Employee ) -SELECT - d.name AS Department, - t.name AS Employee, - salary AS Salary +SELECT d.name AS Department, t.name AS Employee, salary AS Salary FROM - t + T AS t JOIN Department AS d ON t.departmentId = d.id -WHERE rk < 4; +WHERE rk <= 3; ``` diff --git a/solution/0100-0199/0185.Department Top Three Salaries/Solution.sql b/solution/0100-0199/0185.Department Top Three Salaries/Solution.sql index 42133846f3103..5d1ff474da523 100644 --- a/solution/0100-0199/0185.Department Top Three Salaries/Solution.sql +++ b/solution/0100-0199/0185.Department Top Three Salaries/Solution.sql @@ -1,21 +1,16 @@ # Write your MySQL query statement below WITH - t AS ( + T AS ( SELECT - departmentId, - name, - salary, + *, dense_rank() OVER ( PARTITION BY departmentId ORDER BY salary DESC ) AS rk FROM Employee ) -SELECT - d.name AS Department, - t.name AS Employee, - salary AS Salary +SELECT d.name AS Department, t.name AS Employee, salary AS Salary FROM - t + T AS t JOIN Department AS d ON t.departmentId = d.id -WHERE rk < 4; +WHERE rk <= 3; diff --git a/solution/0100-0199/0196.Delete Duplicate Emails/README.md b/solution/0100-0199/0196.Delete Duplicate Emails/README.md index 648a6225bb24d..2cceb9193991d 100644 --- a/solution/0100-0199/0196.Delete Duplicate Emails/README.md +++ b/solution/0100-0199/0196.Delete Duplicate Emails/README.md @@ -61,13 +61,29 @@ Person 表: ### **SQL** ```sql +# Write your MySQL query statement below DELETE FROM Person WHERE - Id NOT IN ( - SELECT - MIN(Id) - FROM (SELECT * FROM Person) AS p - GROUP BY p.Email + id NOT IN (SELECT min(id) FROM (SELECT * FROM Person) AS p GROUP BY email); +``` + +```sql +# Write your MySQL query statement below +DELETE FROM Person +WHERE + id NOT IN ( + SELECT id + FROM + ( + SELECT + id, + row_number() OVER ( + PARTITION BY email + ORDER BY id + ) AS rk + FROM Person + ) AS p + WHERE rk = 1 ); ``` diff --git a/solution/0100-0199/0196.Delete Duplicate Emails/README_EN.md b/solution/0100-0199/0196.Delete Duplicate Emails/README_EN.md index daca7083161f3..0290f090ca4bd 100644 --- a/solution/0100-0199/0196.Delete Duplicate Emails/README_EN.md +++ b/solution/0100-0199/0196.Delete Duplicate Emails/README_EN.md @@ -55,13 +55,29 @@ Person table: ### **SQL** ```sql +# Write your MySQL query statement below DELETE FROM Person WHERE - Id NOT IN ( - SELECT - MIN(Id) - FROM (SELECT * FROM Person) AS p - GROUP BY p.Email + id NOT IN (SELECT min(id) FROM (SELECT * FROM Person) AS p GROUP BY email); +``` + +```sql +# Write your MySQL query statement below +DELETE FROM Person +WHERE + id NOT IN ( + SELECT id + FROM + ( + SELECT + id, + row_number() OVER ( + PARTITION BY email + ORDER BY id + ) AS rk + FROM Person + ) AS p + WHERE rk = 1 ); ``` diff --git a/solution/0100-0199/0196.Delete Duplicate Emails/Solution.sql b/solution/0100-0199/0196.Delete Duplicate Emails/Solution.sql index 97a46e716c369..c69694e02005b 100644 --- a/solution/0100-0199/0196.Delete Duplicate Emails/Solution.sql +++ b/solution/0100-0199/0196.Delete Duplicate Emails/Solution.sql @@ -1,8 +1,4 @@ +# Write your MySQL query statement below DELETE FROM Person WHERE - Id NOT IN ( - SELECT - MIN(Id) - FROM (SELECT * FROM Person) AS p - GROUP BY p.Email - ); + id NOT IN (SELECT min(id) FROM (SELECT * FROM Person) AS p GROUP BY email); diff --git a/solution/0100-0199/0197.Rising Temperature/README.md b/solution/0100-0199/0197.Rising Temperature/README.md index 6170dfde05c34..8c0c4a3d4c1c5 100644 --- a/solution/0100-0199/0197.Rising Temperature/README.md +++ b/solution/0100-0199/0197.Rising Temperature/README.md @@ -66,13 +66,13 @@ Weather 表: ### **SQL** ```sql -SELECT w1.Id +# Write your MySQL query statement below +SELECT w1.id FROM - Weather AS w1, - Weather AS w2 -WHERE - DATEDIFF(w1.RecordDate, w2.RecordDate) = 1 - AND w1.Temperature > w2.Temperature; + Weather AS w1 + JOIN Weather AS w2 + ON datediff(w1.recordDate, w2.recordDate) = 1 + AND w1.temperature > w2.temperature; ``` ```sql diff --git a/solution/0100-0199/0197.Rising Temperature/README_EN.md b/solution/0100-0199/0197.Rising Temperature/README_EN.md index 48f3c9b7ae8b0..fd3f41943fd95 100644 --- a/solution/0100-0199/0197.Rising Temperature/README_EN.md +++ b/solution/0100-0199/0197.Rising Temperature/README_EN.md @@ -59,13 +59,13 @@ In 2015-01-04, the temperature was higher than the previous day (20 -> 30). ### **SQL** ```sql -SELECT w1.Id +# Write your MySQL query statement below +SELECT w1.id FROM - Weather AS w1, - Weather AS w2 -WHERE - DATEDIFF(w1.RecordDate, w2.RecordDate) = 1 - AND w1.Temperature > w2.Temperature; + Weather AS w1 + JOIN Weather AS w2 + ON datediff(w1.recordDate, w2.recordDate) = 1 + AND w1.temperature > w2.temperature; ``` ```sql diff --git a/solution/0100-0199/0197.Rising Temperature/Solution.sql b/solution/0100-0199/0197.Rising Temperature/Solution.sql index a76a6a0ddc596..af033d6937907 100644 --- a/solution/0100-0199/0197.Rising Temperature/Solution.sql +++ b/solution/0100-0199/0197.Rising Temperature/Solution.sql @@ -1,7 +1,7 @@ -SELECT w1.Id +# Write your MySQL query statement below +SELECT w1.id FROM - Weather AS w1, - Weather AS w2 -WHERE - DATEDIFF(w1.RecordDate, w2.RecordDate) = 1 - AND w1.Temperature > w2.Temperature; + Weather AS w1 + JOIN Weather AS w2 + ON datediff(w1.recordDate, w2.recordDate) = 1 + AND w1.temperature > w2.temperature;