mirror of
https://gitee.com/coder-xiaomo/leetcode-problemset
synced 2025-09-04 15:01:40 +08:00
143 lines
5.9 KiB
HTML
143 lines
5.9 KiB
HTML
<p>Table: <code>stores</code></p>
|
|
|
|
<pre>
|
|
+-------------+---------+
|
|
| Column Name | Type |
|
|
+-------------+---------+
|
|
| store_id | int |
|
|
| store_name | varchar |
|
|
| location | varchar |
|
|
+-------------+---------+
|
|
store_id is the unique identifier for this table.
|
|
Each row contains information about a store and its location.
|
|
</pre>
|
|
|
|
<p>Table: <code>inventory</code></p>
|
|
|
|
<pre>
|
|
+-------------+---------+
|
|
| Column Name | Type |
|
|
+-------------+---------+
|
|
| inventory_id| int |
|
|
| store_id | int |
|
|
| product_name| varchar |
|
|
| quantity | int |
|
|
| price | decimal |
|
|
+-------------+---------+
|
|
inventory_id is the unique identifier for this table.
|
|
Each row represents the inventory of a specific product at a specific store.
|
|
</pre>
|
|
|
|
<p>Write a solution to find stores that have <strong>inventory imbalance</strong> - stores where the most expensive product has lower stock than the cheapest product.</p>
|
|
|
|
<ul>
|
|
<li>For each store, identify the <strong>most expensive product</strong> (highest price) and its quantity</li>
|
|
<li>For each store, identify the <strong>cheapest product</strong> (lowest price) and its quantity</li>
|
|
<li>A store has inventory imbalance if the most expensive product's quantity is <strong>less than</strong> the cheapest product's quantity</li>
|
|
<li>Calculate the <strong>imbalance ratio</strong> as (cheapest_quantity / most_expensive_quantity)</li>
|
|
<li><strong>Round</strong> the imbalance ratio to <strong>2</strong> decimal places</li>
|
|
<li>Only include stores that have <strong>at least </strong><code>3</code><strong> different products</strong></li>
|
|
</ul>
|
|
|
|
<p>Return <em>the result table ordered by imbalance ratio in <strong>descending</strong> order, then by store name in <strong>ascending</strong> order</em>.</p>
|
|
|
|
<p>The result format is in the following example.</p>
|
|
|
|
<p> </p>
|
|
<p><strong class="example">Example:</strong></p>
|
|
|
|
<div class="example-block">
|
|
<p><strong>Input:</strong></p>
|
|
|
|
<p>stores table:</p>
|
|
|
|
<pre class="example-io">
|
|
+----------+----------------+-------------+
|
|
| store_id | store_name | location |
|
|
+----------+----------------+-------------+
|
|
| 1 | Downtown Tech | New York |
|
|
| 2 | Suburb Mall | Chicago |
|
|
| 3 | City Center | Los Angeles |
|
|
| 4 | Corner Shop | Miami |
|
|
| 5 | Plaza Store | Seattle |
|
|
+----------+----------------+-------------+
|
|
</pre>
|
|
|
|
<p>inventory table:</p>
|
|
|
|
<pre class="example-io">
|
|
+--------------+----------+--------------+----------+--------+
|
|
| inventory_id | store_id | product_name | quantity | price |
|
|
+--------------+----------+--------------+----------+--------+
|
|
| 1 | 1 | Laptop | 5 | 999.99 |
|
|
| 2 | 1 | Mouse | 50 | 19.99 |
|
|
| 3 | 1 | Keyboard | 25 | 79.99 |
|
|
| 4 | 1 | Monitor | 15 | 299.99 |
|
|
| 5 | 2 | Phone | 3 | 699.99 |
|
|
| 6 | 2 | Charger | 100 | 25.99 |
|
|
| 7 | 2 | Case | 75 | 15.99 |
|
|
| 8 | 2 | Headphones | 20 | 149.99 |
|
|
| 9 | 3 | Tablet | 2 | 499.99 |
|
|
| 10 | 3 | Stylus | 80 | 29.99 |
|
|
| 11 | 3 | Cover | 60 | 39.99 |
|
|
| 12 | 4 | Watch | 10 | 299.99 |
|
|
| 13 | 4 | Band | 25 | 49.99 |
|
|
| 14 | 5 | Camera | 8 | 599.99 |
|
|
| 15 | 5 | Lens | 12 | 199.99 |
|
|
+--------------+----------+--------------+----------+--------+
|
|
</pre>
|
|
|
|
<p><strong>Output:</strong></p>
|
|
|
|
<pre class="example-io">
|
|
+----------+----------------+-------------+------------------+--------------------+------------------+
|
|
| store_id | store_name | location | most_exp_product | cheapest_product | imbalance_ratio |
|
|
+----------+----------------+-------------+------------------+--------------------+------------------+
|
|
| 3 | City Center | Los Angeles | Tablet | Stylus | 40.00 |
|
|
| 1 | Downtown Tech | New York | Laptop | Mouse | 10.00 |
|
|
| 2 | Suburb Mall | Chicago | Phone | Case | 25.00 |
|
|
+----------+----------------+-------------+------------------+--------------------+------------------+
|
|
</pre>
|
|
|
|
<p><strong>Explanation:</strong></p>
|
|
|
|
<ul>
|
|
<li><strong>Downtown Tech (store_id = 1):</strong>
|
|
|
|
<ul>
|
|
<li>Most expensive product: Laptop ($999.99) with quantity 5</li>
|
|
<li>Cheapest product: Mouse ($19.99) with quantity 50</li>
|
|
<li>Inventory imbalance: 5 < 50 (expensive product has lower stock)</li>
|
|
<li>Imbalance ratio: 50 / 5 = 10.00</li>
|
|
<li>Has 4 products (≥ 3), so qualifies</li>
|
|
</ul>
|
|
</li>
|
|
<li><strong>Suburb Mall (store_id = 2):</strong>
|
|
<ul>
|
|
<li>Most expensive product: Phone ($699.99) with quantity 3</li>
|
|
<li>Cheapest product: Case ($15.99) with quantity 75</li>
|
|
<li>Inventory imbalance: 3 < 75 (expensive product has lower stock)</li>
|
|
<li>Imbalance ratio: 75 / 3 = 25.00</li>
|
|
<li>Has 4 products (≥ 3), so qualifies</li>
|
|
</ul>
|
|
</li>
|
|
<li><strong>City Center (store_id = 3):</strong>
|
|
<ul>
|
|
<li>Most expensive product: Tablet ($499.99) with quantity 2</li>
|
|
<li>Cheapest product: Stylus ($29.99) with quantity 80</li>
|
|
<li>Inventory imbalance: 2 < 80 (expensive product has lower stock)</li>
|
|
<li>Imbalance ratio: 80 / 2 = 40.00</li>
|
|
<li>Has 3 products (≥ 3), so qualifies</li>
|
|
</ul>
|
|
</li>
|
|
<li><strong>Stores not included:</strong>
|
|
<ul>
|
|
<li>Corner Shop (store_id = 4): Only has 2 products (Watch, Band) - doesn't meet minimum 3 products requirement</li>
|
|
<li>Plaza Store (store_id = 5): Only has 2 products (Camera, Lens) - doesn't meet minimum 3 products requirement</li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
|
|
<p>The Results table is ordered by imbalance ratio in descending order, then by store name in ascending order</p>
|
|
</div>
|