Don*_*n P 5 mysql sql group-by
我需要使用上一个日期的最近日期减去 MySQL 中的两行:
起始表:
Stock Date Price
GOOG 2012-05-20 402
GOOG 2012-05-21 432
APPL 2012-05-20 553
APPL 2012-05-21 590
FB 2012-05-20 40
FB 2012-05-21 34
Run Code Online (Sandbox Code Playgroud)
这是结果表:
Stock Date Price Change
GOOG 2012-05-21 30
APPL 2012-05-21 37
FB 2012-05-21 -6
Run Code Online (Sandbox Code Playgroud)
现在我每家公司只有两个日期,但是如果您的查询可以处理任意数量的日期,则奖励投票。
我所做的是获得两个单独的查询来获取每只股票的最大日期和最小日期。尝试这个,
SELECT maxList.stock,
maxList.Date,
(maxlist.Price - minlist.Price) totalPrice
FROM
(
SELECT a.*
FROM tableName a INNER JOIN
(
SELECT Stock, MAX(date) maxDate
FROM tableName
GROUP BY Stock
) b ON a.stock = b.stock AND
a.date = b.maxDate
) maxList INNER JOIN
(
SELECT a.*
FROM tableName a INNER JOIN
(
SELECT Stock, MIN(date) minDate
FROM tableName
GROUP BY Stock
) b ON a.stock = b.stock AND
a.date = b.minDate
) minList ON maxList.stock = minList.stock
Run Code Online (Sandbox Code Playgroud)
更新1
看到你最后一句话:Right now I just have two dates per company, but bonus upvotes if your query can handle any number of dates.如果你有这样的记录怎么办?
FB 2012-05-20 40
FB 2012-05-21 34
FB 2012-05-22 42
Run Code Online (Sandbox Code Playgroud)
其结果是什么?
