sql - 找到最高总价并转换
问题描述
因此,我必须使用一个查询,在其中列出交易 ID 股票 ID 以及转换为美元的总价格,这是最高总价格。
SELECT
tr.trade_id, tr.stock_id, round(tr.price_total * con.exchange_rate,2)
as "US Dollars"
from trade tr
JOIN stock_exchange se
on se.STOCK_EX_ID = tr.STOCK_EX_ID
JOIN currency curr
on curr.CURRENCY_ID = se.currency_id
JOIN conversion con
on con.from_CURRENCY_ID = curr.CURRENCY_ID
WHERE (tr.PRICE_TOTAL) = (Select Max(price_total) from trade) and curr.name =
'Dollar' and tr.stock_ex_id is not NULL
group by tr.trade_id, tr.stock_id, round(tr.price_total), tr.price_total,
round(tr.price_total * con.exchange_rate,2);
交易(trade_id PK、stock_id FK2、transaction_time、shares、stock_ex_id FK1、price_total)
Stock-exchange( stock_ex_id PK, name, symbol, currency_id FK1)
conversion( from_currency_id PK, to_currency_id)
currency ( currency_id PK, name, symbol
expected output should be -
trade_id - 1 stock_id 1, price (non conversion) (225000000)
我不确定为什么在我的输出中我什么也没得到。有什么建议可以解决这个问题吗?抱歉,如果我没有正确格式化问题
解决方案
但是您可以先查看您的 select max 查询返回的内容,然后按该值过滤交易表。通过您的所有表格跟踪这一点,以查看您的交易表格上的数据不在其他表格上的位置。
或者将您的 curr.name 条件与连接放在一起,并为最后两个表指定一个 LEFT JOIN 以查看数据是否丢失,如下所示:
SELECT tr.trade_id
,tr.stock_id
,round(tr.price_total * con.exchange_rate, 2) AS "US Dollars"
FROM trade tr
LEFT JOIN stock_exchange se
ON se.STOCK_EX_ID = tr.STOCK_EX_ID
LEFT JOIN currency curr
ON curr.CURRENCY_ID = se.currency_id
AND curr.name = 'Dollar'
LEFT JOIN conversion con
ON con.from_CURRENCY_ID = curr.CURRENCY_ID
WHERE (tr.PRICE_TOTAL) = (SELECT Max(trm.price_total) FROM trade trm)
AND tr.stock_ex_id IS NOT NULL
推荐阅读
- php - 有没有办法在使用 php 检索后使用存储在 mysql 中的 PHP 代码?
- r - 在R中对列进行数字排序
- c - 为什么函数会被跳过而不被读取?
- javascript - 如何获取 DatePicker Cypress 的值
- javascript - 运算符 < 不能应用于 Number 和 boolean 类型
- vba - 子窗体阻塞 Recordset.AddNew(错误 3027)
- typescript - 我可以将类型用作值(或从构造函数参数正确推断泛型类类型)吗?
- javascript - 为什么我的正常同步代码行像异步一样工作?
- python - Python 以线程安全的方式在本地抑制警告
- version-control - XPages:为两个数据库设置 SourceTree 作为分支