# Write your MySQL query statement below
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 中没有销售。
原站题解
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