MYSQL, группировка с несколькими столбцами - PullRequest
0 голосов
/ 21 октября 2018

У меня есть две таблицы.Пример запроса данных: cmadjprice:

select symbol,close,timestamp from cmadjprice;
ABCD,815.9,2014-10-31
ABCD,808.85,2014-11-03
ABCD,797.4,2014-11-05
ABCD,776.55,2014-11-07
ABCD,800.85,2014-11-10
ABCD,808.9,2014-11-11
ABCD,826.8,2014-11-12
ABCD,856.45,2014-11-13
ABCD,856.65,2014-11-14

Пример запроса вывода таблицы BB03

select symbol,enter_dt,enter_price,exit_dt,exit_price from bb03 ;
ABCD,2014-10-31,815.90,2018-07-27,1073.60

ищу максимальную цену закрытия с той же датой.

select a.symbol, max(a.close) ,a.timestamp  from  cmadjprice a
inner join BB03 b on a.symbol = b.symbol
where a.timestamp between b.enter_dt and b.exit_dt
group by a.symbol,a.timestamp;

нетполучать вывод?Пожалуйста, помогите в этом Ожидаемый вывод

ABCD,2014-10-31,815.90,2018-07-27,1073.60,856.65,2014-11-14;

Ответы [ 2 ]

0 голосов
/ 21 октября 2018

Я думаю, что это то, что вам нужно:
Обратите внимание, что это может вернуть более одной записи в случае, если максимальное значение закрытия появилось более одного раза в последовательности меток времени, связанных с данным символом

select c.symbol, c.maxval, d.timestamp from 
(
select 
a.symbol, 
max(a.close) as maxval 
from  
cmadjprice a
inner join BB03 b 
on a.symbol = b.symbol 
where a.timestamp between b.enter_dt and b.exit_dt
group by a.symbol
) c
inner join
cmadjprice d
on c.symbol = d.symbol and c.maxval = d.close
;
0 голосов
/ 21 октября 2018

Попробуйте ниже:

select a.symbol, max(cast(a.close as DECIMAL(5,2)))  from  cmadjprice a
inner join BB03 b on a.symbol = b.symbol
where a.timestamp between b.enter_dt and b.exit_dt
group by a.symbol;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...