|
1 |
| -# [1645. ](https://leetcode-cn.com/problems/hopper-company-queries-ii) |
| 1 | +# [1645. Hopper Company Queries II](https://leetcode-cn.com/problems/hopper-company-queries-ii) |
2 | 2 |
|
3 | 3 | [English Version](/solution/1600-1699/1645.Hopper%20Company%20Queries%20II/README_EN.md)
|
4 | 4 |
|
5 | 5 | ## 题目描述
|
6 | 6 |
|
7 | 7 | <!-- 这里写题目描述 -->
|
8 | 8 |
|
9 |
| -None |
| 9 | +<p>Table: <code>Drivers</code></p> |
| 10 | + |
| 11 | +<pre> |
| 12 | ++-------------+---------+ |
| 13 | +| Column Name | Type | |
| 14 | ++-------------+---------+ |
| 15 | +| driver_id | int | |
| 16 | +| join_date | date | |
| 17 | ++-------------+---------+ |
| 18 | +driver_id is the primary key for this table. |
| 19 | +Each row of this table contains the driver's ID and the date they joined the Hopper company. |
| 20 | +</pre> |
| 21 | + |
| 22 | +<p> </p> |
| 23 | + |
| 24 | +<p>Table: <code>Rides</code></p> |
| 25 | + |
| 26 | +<pre> |
| 27 | ++--------------+---------+ |
| 28 | +| Column Name | Type | |
| 29 | ++--------------+---------+ |
| 30 | +| ride_id | int | |
| 31 | +| user_id | int | |
| 32 | +| requested_at | date | |
| 33 | ++--------------+---------+ |
| 34 | +ride_id is the primary key for this table. |
| 35 | +Each row of this table contains the ID of a ride, the user's ID that requested it, and the day they requested it. |
| 36 | +There may be some ride requests in this table that were not accepted. |
| 37 | +</pre> |
| 38 | + |
| 39 | +<p> </p> |
| 40 | + |
| 41 | +<p>Table: <code>AcceptedRides</code></p> |
| 42 | + |
| 43 | +<pre> |
| 44 | ++---------------+---------+ |
| 45 | +| Column Name | Type | |
| 46 | ++---------------+---------+ |
| 47 | +| ride_id | int | |
| 48 | +| driver_id | int | |
| 49 | +| ride_distance | int | |
| 50 | +| ride_duration | int | |
| 51 | ++---------------+---------+ |
| 52 | +ride_id is the primary key for this table. |
| 53 | +Each row of this table contains some information about an accepted ride. |
| 54 | +It is guaranteed that each accepted ride exists in the Rides table. |
| 55 | +</pre> |
| 56 | + |
| 57 | +<p> </p> |
| 58 | + |
| 59 | +<p>Write an SQL query to report the <strong>percentage</strong> of working drivers (<code>working_percentage</code>) for each month of <strong>2020</strong> where:</p> |
| 60 | +<img alt="" src="https://cdn.jsdelivr.net/gh/doocs/leetcode@main/solution/1600-1699/1645.Hopper%20Company%20Queries%20II/images/codecogseqn.png" style="width: 970px; height: 44px;" /> |
| 61 | +<p><strong>Note</strong> that if the number of available drivers during a month is zero, we consider the <code>working_percentage</code> to be <code>0</code>.</p> |
| 62 | + |
| 63 | +<p>Return the result table ordered by <code>month</code> in <strong>ascending</strong> order, where <code>month</code> is the month's number (January is <code>1</code>, February is <code>2</code>, etc.). Round <code>working_percentage</code> to the nearest <strong>2 decimal places</strong>.</p> |
| 64 | + |
| 65 | +<p>The query result format is in the following example.</p> |
| 66 | + |
| 67 | +<p> </p> |
| 68 | + |
| 69 | +<pre> |
| 70 | +Drivers table: |
| 71 | ++-----------+------------+ |
| 72 | +| driver_id | join_date | |
| 73 | ++-----------+------------+ |
| 74 | +| 10 | 2019-12-10 | |
| 75 | +| 8 | 2020-1-13 | |
| 76 | +| 5 | 2020-2-16 | |
| 77 | +| 7 | 2020-3-8 | |
| 78 | +| 4 | 2020-5-17 | |
| 79 | +| 1 | 2020-10-24 | |
| 80 | +| 6 | 2021-1-5 | |
| 81 | ++-----------+------------+ |
| 82 | + |
| 83 | +Rides table: |
| 84 | ++---------+---------+--------------+ |
| 85 | +| ride_id | user_id | requested_at | |
| 86 | ++---------+---------+--------------+ |
| 87 | +| 6 | 75 | 2019-12-9 | |
| 88 | +| 1 | 54 | 2020-2-9 | |
| 89 | +| 10 | 63 | 2020-3-4 | |
| 90 | +| 19 | 39 | 2020-4-6 | |
| 91 | +| 3 | 41 | 2020-6-3 | |
| 92 | +| 13 | 52 | 2020-6-22 | |
| 93 | +| 7 | 69 | 2020-7-16 | |
| 94 | +| 17 | 70 | 2020-8-25 | |
| 95 | +| 20 | 81 | 2020-11-2 | |
| 96 | +| 5 | 57 | 2020-11-9 | |
| 97 | +| 2 | 42 | 2020-12-9 | |
| 98 | +| 11 | 68 | 2021-1-11 | |
| 99 | +| 15 | 32 | 2021-1-17 | |
| 100 | +| 12 | 11 | 2021-1-19 | |
| 101 | +| 14 | 18 | 2021-1-27 | |
| 102 | ++---------+---------+--------------+ |
| 103 | + |
| 104 | +AcceptedRides table: |
| 105 | ++---------+-----------+---------------+---------------+ |
| 106 | +| ride_id | driver_id | ride_distance | ride_duration | |
| 107 | ++---------+-----------+---------------+---------------+ |
| 108 | +| 10 | 10 | 63 | 38 | |
| 109 | +| 13 | 10 | 73 | 96 | |
| 110 | +| 7 | 8 | 100 | 28 | |
| 111 | +| 17 | 7 | 119 | 68 | |
| 112 | +| 20 | 1 | 121 | 92 | |
| 113 | +| 5 | 7 | 42 | 101 | |
| 114 | +| 2 | 4 | 6 | 38 | |
| 115 | +| 11 | 8 | 37 | 43 | |
| 116 | +| 15 | 8 | 108 | 82 | |
| 117 | +| 12 | 8 | 38 | 34 | |
| 118 | +| 14 | 1 | 90 | 74 | |
| 119 | ++---------+-----------+---------------+---------------+ |
| 120 | + |
| 121 | +Result table: |
| 122 | ++-------+--------------------+ |
| 123 | +| month | working_percentage | |
| 124 | ++-------+--------------------+ |
| 125 | +| 1 | 0.00 | |
| 126 | +| 2 | 0.00 | |
| 127 | +| 3 | 25.00 | |
| 128 | +| 4 | 0.00 | |
| 129 | +| 5 | 0.00 | |
| 130 | +| 6 | 20.00 | |
| 131 | +| 7 | 20.00 | |
| 132 | +| 8 | 20.00 | |
| 133 | +| 9 | 0.00 | |
| 134 | +| 10 | 0.00 | |
| 135 | +| 11 | 33.33 | |
| 136 | +| 12 | 16.67 | |
| 137 | ++-------+--------------------+ |
| 138 | + |
| 139 | +By the end of January --> two active drivers (10, 8) and no accepted rides. The percentage is 0%. |
| 140 | +By the end of February --> three active drivers (10, 8, 5) and no accepted rides. The percentage is 0%. |
| 141 | +By the end of March --> four active drivers (10, 8, 5, 7) and one accepted ride by driver (10). The percentage is (1 / 4) * 100 = 25%. |
| 142 | +By the end of April --> four active drivers (10, 8, 5, 7) and no accepted rides. The percentage is 0%. |
| 143 | +By the end of May --> five active drivers (10, 8, 5, 7, 4) and no accepted rides. The percentage is 0%. |
| 144 | +By the end of June --> five active drivers (10, 8, 5, 7, 4) and one accepted ride by driver (10). The percentage is (1 / 5) * 100 = 20%. |
| 145 | +By the end of July --> five active drivers (10, 8, 5, 7, 4) and one accepted ride by driver (8). The percentage is (1 / 5) * 100 = 20%. |
| 146 | +By the end of August --> five active drivers (10, 8, 5, 7, 4) and one accepted ride by driver (7). The percentage is (1 / 5) * 100 = 20%. |
| 147 | +By the end of Septemeber --> five active drivers (10, 8, 5, 7, 4) and no accepted rides. The percentage is 0%. |
| 148 | +By the end of October --> six active drivers (10, 8, 5, 7, 4, 1) and no accepted rides. The percentage is 0%. |
| 149 | +By the end of November --> six active drivers (10, 8, 5, 7, 4, 1) and two accepted rides by <strong>two different</strong> drivers (1, 7). The percentage is (2 / 6) * 100 = 33.33%. |
| 150 | +By the end of December --> six active drivers (10, 8, 5, 7, 4, 1) and one accepted ride by driver (4). The percentage is (1 / 6) * 100 = 16.67%. |
| 151 | +</pre> |
| 152 | + |
10 | 153 |
|
11 | 154 | ## 解法
|
12 | 155 |
|
|
16 | 159 |
|
17 | 160 | ### **SQL**
|
18 | 161 |
|
| 162 | +<!-- 这里可写当前语言的特殊实现逻辑 --> |
| 163 | + |
19 | 164 | ```sql
|
20 | 165 |
|
21 | 166 | ```
|
|
0 commit comments