题目描述
Table: Sales
+-------------+-------+
| Column Name | Type |
+-------------+-------+
| sale_id | int |
| product_id | int |
| year | int |
| quantity | int |
| price | int |
+-------------+-------+
sale_id is the primary key of this table.
product_id is a foreign key to Product table.
Note that the price is per unit.
Table: Product
+--------------+---------+
| Column Name | Type |
+--------------+---------+
| product_id | int |
| product_name | varchar |
+--------------+---------+
product_id is the primary key of this table.
Write an SQL query that selects the product id, year, quantity, and price for the first year of every product sold.
The query result format is in the following example:
Sales table:
+---------+------------+------+----------+-------+
| sale_id | product_id | year | quantity | price |
+---------+------------+------+----------+-------+
| 1 | 100 | 2008 | 10 | 5000 |
| 2 | 100 | 2009 | 12 | 5000 |
| 7 | 200 | 2011 | 15 | 9000 |
+---------+------------+------+----------+-------+
Product table:
+------------+--------------+
| product_id | product_name |
+------------+--------------+
| 100 | Nokia |
| 200 | Apple |
| 300 | Samsung |
+------------+--------------+
Result table:
+------------+------------+----------+-------+
| product_id | first_year | quantity | price |
+------------+------------+----------+-------+
| 100 | 2008 | 10 | 5000 |
| 200 | 2011 | 15 | 9000 |
+------------+------------+----------+-------+
题目来源及自己的思路
从LeetCode上来的, 1070. Product Sales Analysis III
正确答案(MySQL)是
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
)
我起初写的答案是
SELECT product_id, MIN(year) as first_year, quantity, price
FROM Sales
GROUP BY product_id;
经过实验, 这样SELECT中的quantity和price值理应都是MIN(year)的相对值, 请问错在哪里呢? 为什么我写的答案不对?
MySQL Handling of GROUP BY