Skip to content

Commit 6db604e

Browse files
authored
feat: add sql solutions to lc problems: No.1164,1173 (#1205)
* No.1164.Product Price at a Given Date * No.1173.Immediate Food Delivery I
1 parent b563d43 commit 6db604e

File tree

7 files changed

+90
-41
lines changed

7 files changed

+90
-41
lines changed

.prettierignore

-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ node_modules/
1515
/solution/bash_problem_readme_template_en.md
1616
/solution/0100-0199/0177.Nth Highest Salary/Solution.sql
1717
/solution/0600-0699/0627.Swap Salary/Solution.sql
18-
/solution/1100-1199/1173.Immediate Food Delivery I/Solution.sql
1918
/solution/1400-1499/1454.Active Users/Solution.sql
2019
/solution/1400-1499/1484.Group Sold Products By The Date/Solution.sql
2120
/solution/1500-1599/1511.Customer Order Frequency/Solution.sql

solution/1100-1199/1164.Product Price at a Given Date/README.md

+28
Original file line numberDiff line numberDiff line change
@@ -92,4 +92,32 @@ FROM
9292
ON p1.product_id = p2.product_id;
9393
```
9494

95+
```sql
96+
# Write your MySQL query statement below
97+
WITH
98+
P AS (
99+
SELECT p1.product_id, new_price, change_date
100+
FROM
101+
(
102+
SELECT DISTINCT product_id
103+
FROM Products
104+
) AS p1
105+
LEFT JOIN Products AS p2
106+
ON p1.product_id = p2.product_id
107+
AND p2.change_date <= '2019-08-16'
108+
),
109+
T AS (
110+
SELECT
111+
*,
112+
rank() OVER (
113+
PARTITION BY product_id
114+
ORDER BY change_date DESC
115+
) AS rk
116+
FROM P
117+
)
118+
SELECT product_id, ifnull(new_price, 10) AS price
119+
FROM T
120+
WHERE rk = 1;
121+
```
122+
95123
<!-- tabs:end -->

solution/1100-1199/1164.Product Price at a Given Date/README_EN.md

+28
Original file line numberDiff line numberDiff line change
@@ -88,4 +88,32 @@ FROM
8888
ON p1.product_id = p2.product_id;
8989
```
9090

91+
```sql
92+
# Write your MySQL query statement below
93+
WITH
94+
P AS (
95+
SELECT p1.product_id, new_price, change_date
96+
FROM
97+
(
98+
SELECT DISTINCT product_id
99+
FROM Products
100+
) AS p1
101+
LEFT JOIN Products AS p2
102+
ON p1.product_id = p2.product_id
103+
AND p2.change_date <= '2019-08-16'
104+
),
105+
T AS (
106+
SELECT
107+
*,
108+
rank() OVER (
109+
PARTITION BY product_id
110+
ORDER BY change_date DESC
111+
) AS rk
112+
FROM P
113+
)
114+
SELECT product_id, ifnull(new_price, 10) AS price
115+
FROM T
116+
WHERE rk = 1;
117+
```
118+
91119
<!-- tabs:end -->
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,25 @@
11
# Write your MySQL query statement below
2-
SELECT
3-
p1.product_id AS product_id,
4-
ifnull(p2.price, 10) AS price
5-
FROM
6-
(
7-
SELECT DISTINCT
8-
(product_id) AS product_id
9-
FROM Products
10-
) AS p1
11-
LEFT JOIN (
12-
SELECT
13-
t1.product_id,
14-
t1.new_price AS price
2+
WITH
3+
P AS (
4+
SELECT p1.product_id, new_price, change_date
155
FROM
16-
Products AS t1
17-
JOIN (
18-
SELECT
19-
product_id,
20-
max(change_date) AS change_date
6+
(
7+
SELECT DISTINCT product_id
218
FROM Products
22-
WHERE change_date <= '2019-08-16'
23-
GROUP BY product_id
24-
) AS t2
25-
ON t1.product_id = t2.product_id
26-
AND t1.change_date = t2.change_date
27-
) AS p2
28-
ON p1.product_id = p2.product_id;
9+
) AS p1
10+
LEFT JOIN Products AS p2
11+
ON p1.product_id = p2.product_id
12+
AND p2.change_date <= '2019-08-16'
13+
),
14+
T AS (
15+
SELECT
16+
*,
17+
rank() OVER (
18+
PARTITION BY product_id
19+
ORDER BY change_date DESC
20+
) AS rk
21+
FROM P
22+
)
23+
SELECT product_id, ifnull(new_price, 10) AS price
24+
FROM T
25+
WHERE rk = 1;

solution/1100-1199/1173.Immediate Food Delivery I/README.md

+4-5
Original file line numberDiff line numberDiff line change
@@ -64,13 +64,12 @@ Delivery 表:
6464

6565
```sql
6666
# Write your MySQL query statement below
67-
select
67+
SELECT
6868
round(
69-
sum(if(order_date = customer_pref_delivery_date, 1, 0)) / count(1) * 100,
69+
sum(order_date = customer_pref_delivery_date) * 100 / count(1),
7070
2
71-
) as immediate_percentage
72-
from
73-
Delivery;
71+
) AS immediate_percentage
72+
FROM Delivery;
7473
```
7574

7675
<!-- tabs:end -->

solution/1100-1199/1173.Immediate Food Delivery I/README_EN.md

+4-5
Original file line numberDiff line numberDiff line change
@@ -60,13 +60,12 @@ Delivery table:
6060

6161
```sql
6262
# Write your MySQL query statement below
63-
select
63+
SELECT
6464
round(
65-
sum(if(order_date = customer_pref_delivery_date, 1, 0)) / count(1) * 100,
65+
sum(order_date = customer_pref_delivery_date) * 100 / count(1),
6666
2
67-
) as immediate_percentage
68-
from
69-
Delivery;
67+
) AS immediate_percentage
68+
FROM Delivery;
7069
```
7170

7271
<!-- tabs:end -->
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
# Write your MySQL query statement below
2-
select
2+
SELECT
33
round(
4-
sum(if(order_date = customer_pref_delivery_date, 1, 0)) / count(1) * 100,
4+
sum(order_date = customer_pref_delivery_date) * 100 / count(1),
55
2
6-
) as immediate_percentage
7-
from
8-
Delivery;
6+
) AS immediate_percentage
7+
FROM Delivery;

0 commit comments

Comments
 (0)