我是sql的新手。请你帮我解决这个问题
表名:sales
product_id sales year
1 2000 2007
2 3000 2007
1 4000 2008
我想比较2007年和2008年我的产品销售额与产品ID = 1,并在查询中得到结果 所以,输出应该像
product_id sales in 2007 sales in 2008
1 2000 3000
答案 0 :(得分:2)
您希望的查询结果类型最好通过客户端显示时操作完成。您可以通过以下方式轻松获取数据:
SELECT year, SUM(sales)
FROM sales
WHERE product_id = 1
GROUP BY year
答案 1 :(得分:0)
虽然我完全同意@MarcB,但如果您仍然希望以自己的方式执行此操作,则应运行此查询:
select product_id,
sum(if(year = 2007, sales, 0)) `sales in 2007`,
sum(if(year = 2008, sales, 0)) `sales in 2008`
from products
where product_id = 1
group by product_id
注意sales in 2008
不是您在示例中显示的3000
,而是4000
!
答案 2 :(得分:0)
SELECT PRODUCT_ID,YEAR,SALES,
LEAD(SALES,1) OVER (PARTITION BY YEAR ORDER BY SALES) AS FOLLOWING_YEAR_SALES
FROM TABLE_NAME;
您可以使用上面的查询来获取新的列,说明下一年的销售额。因为两年销售额之间的差异很容易计算。