Доброе время суток,
Можно ли объединить следующие запросы в один запрос?:
select SUM(PROFIT) as PROFIT
from ARCHIVE
where PROFIT > 0.0 and DATE_END_RATE between '13.01.2017' and '14.01.2017'
С запросом
select SUM(PROFIT) as LOSS
from ARCHIVE
where PROFIT < 0.0 and DATE_END_RATE between '13.01.2017' and '14.01.2017'
А также
select *
from ARCHIVE
where DATE_END_RATE between '13.01.2017' and '14.01.2017'
чтобы сразу вывести все записи таблицы ARCHIVE, и еще добавить в нее два поля "PROFIT" и "LOSS", в которых отобразить соответствующие положительные и отрицательные суммы?
Заранее спасибо
Объединить первые два несложно:
select SUM(CASE WHEN PROFIT > 0.0 THEN PROFIT END) as PROFIT
, SUM(CASE WHEN PROFIT < 0.0 THEN PROFIT END) as LOSS
from ARCHIVE
where DATE_END_RATE between '13.01.2017' and '14.01.2017'
Относительно третьего - это будут разные уровни группировки, и совмещение их в одном запросе не имеет смысла.
Оконных функций, позволяющих на каждой строке получить сразу сумму нескольких строк в MySQL нет, поэтому приходится накапливать результаты в переменных и во внешнем запросе их выводить.
select *, @p as PROFIT, @l as LOST
from (
select *,
@p:=@p+if(PROFIT>0,PROFIT,0),
@l:=@l+if(PROFIT<0,PROFIT,0)
from ARCHIVE, (select @p:=0,@l:=0) A
where DATE_END_RATE between '13.01.2017' and '14.01.2017'
) X
Сборка персонального компьютера от Artline: умный выбор для современных пользователей