首页 > 解决方案 > 列出 SQL 中 2 列值的 Max(difference)

问题描述


我正在尝试计算 2 列值的最大差异,然后将它们按常见类别(在本例中为符号)分组。

Symbol  mydate      mytime          myopen  High    Low     myclose
ZEEL    2019-07-29   09:15:00.000   401.1   402.05  400.25  402.05
ZEEL    2019-07-29   09:17:00.000   401.6   402     398.6   400.7
ZEEL    2019-07-29   09:19:47.000   400     400     400     400
YESBANK 2019-07-29   09:15:00.000   95.8    96.05   94.6    95.25
YESBANK 2019-07-29   09:17:00.000   95.2    95.2    94.45   94.45
YESBANK 2019-07-29   09:19:46.000   93.8    93.8    93.8    93.8
WONDI   2019-07-29  09:15:00.000    258.8   258.8   258.75  258.75

(>12000 条记录,如上)

我想找到按符号分组的高 - 低值的最大差异。

所以我尝试了:

select symbol, (high-low)  as Diff from dcTbl_29072019 
where mytime>='15:01:35.000' 
order by symbol

我有:

symbol  Diff
AARTIIND    1.34999999999991
AARTIIND    0
ACC 1.25

我现在需要根据符号对以上输出进行分组,添加一条带有“按符号分组”的行返回错误。

需要明确的是,我想要的输出是:

symbol  Diff
AARTIIND    1.34999999999991
ACC 1.25 ... (and So On).

TIA

标签: mysqlsqlfunctionsubqueryaggregate

解决方案


使用分组子查询的一种方法:

select  symbol, (high - low) as diff
from (
    select  symbol, max(high) as high, min(low) as low
    from dcTbl_29072019
    where mytime >= '15:01:35.000'
    group by symbol
) gr
order by symbol

或者,一次性完成:

select  symbol, max(high) - min(low) as diff
from dcTbl_29072019
where mytime >= '15:01:35.000'
group by symbol
order by symbol

推荐阅读