我正在leetcode上练习this问题,我想出了以下解决方案:
select product_id, min(year) first_year, quantity, price from
Sales
group by product_id
但是我上面的解决方案是错误的,正确的解决方案是:
-- # Write your MySQL query statement below
SELECT product_id, year AS first_year, quantity, price
FROM Sales
WHERE (product_id, year) in (
SELECT product_id, MIN(year)
FROM Sales
GROUP BY product_id
)
我的问题:
以上两种解决方案有什么区别,它们对我来说看起来相同,但结果不同。
您的查询按product_id 对数据进行分组,然后为每个组选择最小年份。但是,它还选择数量和价格,这不属于分组和聚合的一部分。
但您的问题是结果中的数量和价格值可能与每种产品的最小年份不对应。它们可能来自组内的任何行,从而导致错误或误导性信息。
另一方面,另一个查询从 Sales 表中选择所有列(product_id、year、quantity、price),但仅选择(product_id、year)组合与子查询结果匹配的行。这可确保您获得与每种产品第一年销售相关的正确数量和价格。