在mysql中,如何从第2行减去第1行,从第3行减去第2行,等等?我从中提取数据的表包含多个产品,所有产品都有多个价格(在不同的日期)
我正在使用的代码:
SELECT
orderline_sales.product_name,
orderline_sales.price
FROM
orderline_sales
GROUP BY price
HAVING orderline_sales.product_name = 'Ibuprofen';
我得到的结果是:
|---------------------|------------------|
| product_name | price |
|---------------------|------------------|
| Ibuprofen | 30.20 |
|---------------------|------------------|
| Ibuprofen | 32.20 |
|---------------------|------------------|
| Ibuprofen | 35.20 |
|---------------------|------------------|
我想要的结果是:
|---------------------|------------------|------------------|
| product_name | price | price_change |
|---------------------|------------------|------------------|
| Ibuprofen | 30.20 | 0 |
|---------------------|------------------|------------------|
| Ibuprofen | 32.20 | 2 |
|---------------------|------------------|------------------|
| Ibuprofen | 35.20 | 3 |
|---------------------|------------------|------------------|
3条答案
按热度按时间cyvaqqii1#
您可能希望查看mysql的用户定义变量,然后您可能希望执行以下操作:
我没有检查语法,所以可能有点不对劲,但这是一般的想法。请注意,我添加了日期,以便您可以按它排序,否则结果可能毫无意义。
编辑:
刚刚在我的机器上运行了这个:
q5iwbnjs2#
假设最初的目的是跟踪价格变化(time/id)。假设groupby是用来消除价格不变的行的。你可以做以下(dave答案的变体):
与@dave的答案不同的是去掉了不正确的用法
GROUP BY
.见db小提琴。
dsekswqp3#
也许这样的办法行得通?
此查询返回以下结果: