微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

根据最低ID和MySQL中的外键定义位置

如何解决根据最低ID和MySQL中的外键定义位置

我当前面临以下问题:我有1张与此交易经纪人数据类似的表:

delete()

目标是说如果第一个OrderType(TradeId相同的最低ID)是买入,这是LONG Trade ELSE卖空交易...输出应该是这样的:

TickerId      Id   Ticker   Shares  OrderType
...           ...  ...      ...     ...
01.01.20 ABC  5    ABC      500     Buy
01.01.20 ABC  6    ABC      250     Sell
01.01.20 ABC  7    ABC      250     Sell
...           ...  ...      ...     ...

我想念什么?如何构造查询以完成此任务?

谢谢您的关注;)

解决方法

如果要将其添加到所有行,请使用窗口函数。一种方法是:

select t.*,(case when first_value(orderType) over (partition by tickerid order by id) = 'Buy'
             then 'Long' else 'Short'
        end) as position
from t;

如果每个tickerid只需要一行,则可以使用聚合:

select tickerid,(case when min(case when orderType = 'Buy' then id end) = min(id)
             then 'Long' else 'Short'
        end) as position
from t
group by tickerid;

此处的逻辑是将第一个“购买” ID与第一个“ ID”进行比较。如果它们相同,则您有“多头”交易。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。