Formatted question description: https://leetcode.ca/all/1777.html

1777. Product’s Price for Each Store

Level

Easy

Description

Table: Products

+-------------+---------+
| Column Name | Type    |
+-------------+---------+
| product_id  | int     |
| store       | enum    |
| price       | int     |
+-------------+---------+
(product_id,store) is the primary key for this table.
store is an ENUM of type ('store1', 'store2', 'store3') where each represents the store this product is available at.
price is the price of the product at this store.

Write an SQL query to find the price of each product in each store.

Return the result table in any order.

The query result format is in the following example:

Products table:
+-------------+--------+-------+
| product_id  | store  | price |
+-------------+--------+-------+
| 0           | store1 | 95    |
| 0           | store3 | 105   |
| 0           | store2 | 100   |
| 1           | store1 | 70    |
| 1           | store3 | 80    |
+-------------+--------+-------+
Result table:
+-------------+--------+--------+--------+
| product_id  | store1 | store2 | store3 |
+-------------+--------+--------+--------+
| 0           | 95     | 100    | 105    |
| 1           | 70     | null   | 80     |
+-------------+--------+--------+--------+
Product 0 price's are 95 for store1, 100 for store2 and, 105 for store3.
Product 1 price's are 70 for store1, 80 for store3 and, it's not sold in store2.

Solution

Use case statements to select the sums of prices of store1, store2 and store3 respectively. Group the result by product_id.

# Write your MySQL query statement below
select product_id,
    sum(case when store = 'store1' then price else null end) as store1,
    sum(case when store = 'store2' then price else null end) as store2,
    sum(case when store = 'store3' then price else null end) as store3
    from Products
    group by product_id;

All Problems

All Solutions