gpt4 book ai didi

sql - 查找最小值 + 最大值和关联的列

转载 作者:行者123 更新时间:2023-11-29 13:47:34 31 4
gpt4 key购买 nike

所以数据库表头是:

日期 |购买价格 |卖价 |购买量 |销售量 |交换

我正在尝试:

  1. 列表项
  2. 按日期分组
  3. 对于每个组,找到最低买入价和与之相关的交易所
  4. 找到最大卖价和与之相关的交易所
  5. 找出 max(sellPrice) - min(buyPrice) 之间的差异

根据我正在阅读的内容,我可以使用行还是有更好的解决方案?

(使用postgresql)

编辑:如果我们假设我们有 3 次交换,数据如下:

|日期|购买价格 |卖价 |购买量 |销售量 |交流 |
|1-1-2017 | 1 | 1 | 1 | 1 |交换A |
|1-1-2017 | 2 | 1 | 2 | 1 |交易所B |
|1-1-2017 | 3 | 1 | 3 | 1 |交换C |

解决方案输出应该是

|日期 |购买价格 |购买量 |买汇 |卖价 |销售量 |卖交易所 |
| 1-1-2017 | 1 | 1 |交换A | 3 | 1 |交换C

最佳答案

好的,多亏了其他一些问题,我设法得到了它..

SELECT t1.createdAt, t1.sellPrice, t1.exchangeId AS sellExchange, t2.buyPrice, t2.exchangeId AS buyExchange, t1.sellPrice - t2.buyPrice AS spread, 
CASE
WHEN t1.sellVolume < t2.buyVolume THEN t1.sellVolume
ELSE t2.buyVolume
END AS minVolume
FROM
(SELECT a.createdAt, a.sellPrice, a.sellVolume, a.exchangeid, a.quoteId
FROM quotes a
INNER JOIN (
SELECT createdAt, max(sellPrice) AS sellPrice
FROM quotes
GROUP BY createdAt
) b ON a.createdAt = b.createdAt AND a.sellPrice = b.sellPrice)
t1 INNER JOIN
(SELECT a.createdAt, a.buyPrice, a.buyvolume, a.exchangeid, a.quoteId
FROM quotes a
INNER JOIN (
SELECT createdAt, min(buyPrice) AS buyPrice
FROM quotes
GROUP BY createdAt
) b ON a.createdAt = b.createdAt AND a.buyPrice = b.buyPrice)
t2 ON t1.createdAt = t2.createdAt

会回来的创建于 |卖价 |卖交易所 |购买价格 |买汇 |体积|传播

关于sql - 查找最小值 + 最大值和关联的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45891254/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com