列表

详情


1777. 每家商店的产品价格

表:Products

+-------------+---------+
| Column Name | Type    |
+-------------+---------+
| product_id  | int     |
| store       | enum    |
| price       | int     |
+-------------+---------+
在 SQL 中,(product_id,store) 是这个表的主键。
store 字段是枚举类型,它的取值为以下三种 ('store1', 'store2', 'store3') 。
price 是该商品在这家商店中的价格。

 

找出每种产品在各个商店中的价格。

可以以 任何顺序 输出结果。

返回结果格式如下例所示。

 

示例 1:

输入:
Products 表:
+-------------+--------+-------+
| product_id  | store  | price |
+-------------+--------+-------+
| 0           | store1 | 95    |
| 0           | store3 | 105   |
| 0           | store2 | 100   |
| 1           | store1 | 70    |
| 1           | store3 | 80    |
+-------------+--------+-------+
输出:
+-------------+--------+--------+--------+
| product_id  | store1 | store2 | store3 |
+-------------+--------+--------+--------+
| 0           | 95     | 100    | 105    |
| 1           | 70     | null   | 80     |
+-------------+--------+--------+--------+
解释:
产品 0 的价格在商店 1 为 95 ,商店 2 为 100 ,商店 3 为 105 。
产品 1 的价格在商店 1 为 70 ,商店 3 的产品 1 价格为 80 ,但在商店 2 中没有销售。

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
# Write your MySQL query statement below

mysql 解法, 执行用时: 391 ms, 内存消耗: 0 B, 提交时间: 2023-10-15 16:59:07

select
    product_id,
    sum(if(store='store1',price,null)) store1,
    sum(if(store='store2',price,null)) store2,
    sum(if(store='store3',price,null)) store3
from
    Products
group by
    1

mysql 解法, 执行用时: 427 ms, 内存消耗: 0 B, 提交时间: 2023-10-15 16:58:58

select
    p.product_id,
    a.price store1,
    b.price store2,
    c.price store3
from
    Products p
left join 
    (select * from Products where store = 'store1') a on p.product_id = a.product_id
left join
    (select * from Products where store = 'store2') b on p.product_id = b.product_id
left join
    (select * from Products where store = 'store3') c on p.product_id = c.product_id
group by
    1

mysql 解法, 执行用时: 587 ms, 内存消耗: 0 B, 提交时间: 2023-10-15 16:58:05

# Write your MySQL query statement below
SELECT 
    product_id, 
    MIN(CASE store WHEN 'store1' THEN price ELSE null END) AS store1, 
    MIN(CASE store WHEN 'store2' THEN price ELSE null END) AS store2, 
    MIN(CASE store WHEN 'store3' THEN price ELSE null END) AS store3
FROM products
GROUP BY product_id

上一题