【问题标题】:Is there a way to group values based on remaining position?有没有办法根据剩余位置对值进行分组?
【发布时间】:2020-11-17 11:40:45
【问题描述】:

我有不同的交易要按入场日期和符号分组。

这是原始数据:(这些都是我从用户那里得到的值)

Date        Time       Symbol     Ordertype    Price     Shares (Note for you)
01/01/20    09:30:00   ABC        B            $5.00     500    (Day Trade)
01/01/20    10:30:00   ABC        S            $7.00     500    (Day Trade)
02/01/20    15:00:00   XYZ        B            $10.00    250    (Multi Day Trade)
04/01/20    10:00:00   XYZ        S            $20.00    250    (Multi Day Trade)
...

这是目标:(输入日期 = 第一个订单日)

EntryDate   Symbol     Profit     TotalShares   Type
01/01/20    ABC        1000.00    1000          Day Trade
02/01/20    XYZ        2500.00    500           Multi Day Trade

由于我也有多天交易(订单日期不同),我无法按“日期”分组;

我考虑在这个方向添加一个计算列,如“剩余位置”或其他内容......

由于我对高级 SQL 比较陌生,我希望有人可以分享他对此的想法......

【问题讨论】:

    标签: mysql sql database calculated-columns


    【解决方案1】:

    你可以使用聚合:

    select EntryDate, Symbol,
           sum(case when ordertype = 'B' then - shares * price
                    when ordertype = 'S' then shares * price
                    else 0
               end) as Profit,
           TotalShares, Type
    from t
    group by EntryDate, Symbol, TotalShares, Type
    

    【讨论】:

    • 谢谢,但好像我没有清楚地写下我的案例 - 我在原始数据表中使用“()”表示它作为供您参考的注释 => 这不是一个真正的价值我的表中有 ;)
      我也只有 orderdate 在 origin 表中,但目标是找到第一个交易订单的日期并将其显示为“EntryDate”
    • @Dorbin4 。 . .这回答了您在此处提出的问题。如果您打算问一个不同的问题,那么就提出一个新的问题,其中包含真正表达您所拥有内容的示例数据以及您真正想要实现的逻辑的解释。
    猜你喜欢
    • 2021-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-26
    • 2020-06-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多