MySql:在没有subselect的情况下构建此查询

时间:2016-04-23 17:00:50

标签: mysql sql

我有一个表格中的事务日志表:

| id | date       | type | symbol | volume | unit_price | user_id |
| 1  | 2016-01-01 | BUY  | AAPL   | 100    | 100.00     | a       |
| 2  | 2016-01-02 | SELL | AAPL   | 50     | 110        | a       |

我正在尝试构建一个基于这些事务显示当前余额的视图。表格中的东西:

| user_id | symbol | total_volume | value |

到目前为止,我有:

SELECT 
    t.user_id,
    t.symbol,
    sum(t.volume * t.multiplier) as total_volume,
    sum(t.volume * t.unit_price * t.multiplier) as value
FROM (
    SELECT 
        *,
        CASE type
            WHEN 'SELL' THEN -1
            WHEN 'BUY' THEN 1
        END as multiplier
    FROM transaction
) t
GROUP BY t.user_id, t.symbol;

这让我得到了我需要但由于子选择而无法将其创建为视图。我是否有另一种方法可以将其创建为视图?

1 个答案:

答案 0 :(得分:3)

只需使用@if (count($errors) > 0) <div> <ul> @foreach ($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> </div> @endif 中的条件:

sum

如果SELECT t.user_id, t.symbol, sum(case when t.type = 'SELL' then - volume when t.type = 'BUY' then volume end) ) as total_volume, sum(t.volume * t.unit_price * (case when t.type = 'SELL' then -1 when t.type = 'BUY' then 1 end)) as value FROM transaction t GROUP BY t.user_id, t.symbol; 仅采用这两个值,则可以将其简化为:

type