если условие применяется, то запрос должен быть выполнен - PullRequest
0 голосов
/ 06 июня 2018

Я хочу сделать СУММУ для тех столбцов, которые имеют только (buy_rate - sell_rate) = результат> 0.

Другими словами, , если buy_rate больше sell_rate, тогда buy_rate - sell_rate = profit, примените этот расчет ко всем строкам и сложите все результаты вместе.

   DB::table('finaltrade')
   
      ->select(DB::raw("SUM(ABS(buy_rate - sell_rate)) AS total_profit"))
      ->get();

finaltrades структура таблицы:

id   user_id   exchange_id   market_id   symbol_id      buy_datetime          sell_datetime      buy_rate   sell_rate   quantities  
 ---- --------- ------------- ----------- ----------- --------------------- --------------------- ---------- ----------- ------------ 
   1         1             1           1          96   2018-05-25 18:13:26   0000-00-00 00:00:00       2205           0          100  
   2         1             1           1          96   0000-00-00 00:00:00   2018-05-25 18:13:59          0        6680          100  
   3         4             1           1          23   2018-05-25 18:16:27   0000-00-00 00:00:00          0           0           10  
   4         1             1           1          96   2018-05-25 18:13:59   0000-00-00 00:00:00      50351           0           30  
   5         1             1           1          15   0000-00-00 00:00:00   2018-05-25 18:34:46          0         100          150  
   6         4             1           1         573   2018-05-26 09:29:17   2018-05-27 03:10:09         10          10           10  
   7         1             1           1          15   2018-05-11 09:30:54   2018-05-25 18:34:56         40         100           40

Ответы [ 2 ]

0 голосов
/ 06 июня 2018

Вы можете сделать:

select sum((buy_rate > sell_rate)*(buy_rate - sell_rate)) as profit from finaltrade;
0 голосов
/ 06 июня 2018

В SQL, я думаю, вы хотите:

select sum(buy_rate - sell_rate) as profit
from finaltrade
where buy_rate > sell_rate;

Если вы не хотите предложение where, используйте условное агрегирование:

select sum(case when buy_rate > sell_rate then buy_rate - sell_rate else 0 end) as profit
from finaltrade;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...