根据不同的标准提取数据
Extracting data based on different criteria
所以我试图从给定 2015 年每个月的特定日期的数据集中提取日期、行使价和要价,其中额外的唯一限制适用于行使价,我们想要最大行使价及其相应的要价。例如,在日期 A,我们希望在日期 B 达到 max(strike price <= x1) 和 max(strike price<=x2)。所以我想写 10 SELECT 语句来实现这个,但是这个似乎效率低下。这是我写的示例查询:
SELECT currentdate,max(strike),ask
FROM opt
WHERE currentdate between '2015-01-16' and '2015-01-16'
AND T='P'
AND strike <=191.55;
当我在 impala 中 运行 时,出现错误:
启动 Impala Shell 没有 Kerberos 身份验证
错误:AnalysisException:select 列表表达式不是由聚合输出生成的(GROUP BY 子句中缺少?):currentdate
我对 Stackover 不是很熟悉,格式不正确,我深表歉意。
如果您的预期输出是当天的最大罢工日期列表和询价,那么您需要按当前日期字段分组,否则查询引擎无法理解您想要的最大值特定的一天。您现在拥有的查询不能 运行 因为如果您不提供多条记录(没有组,您的记录集是单独的行,而不是汇总行),最大值不可用。
您缺少分组依据:
SELECT currentdate,max(strike),ask
FROM opt
WHERE currentdate between '2015-01-16' and '2015-01-16'
AND T='P'
AND strike <=191.55
GROUP BY currentdate;
这也会return一个错误:
但您还需要为询问列提供聚合语句。这可能是最大值、平均值、最小值,具体取决于您的具体用例。
SELECT currentdate,max(strike),min(ask)
FROM opt
WHERE currentdate between '2015-01-16' and '2015-01-16'
AND T='P'
AND strike <=191.55
GROUP BY currentdate;
所以我试图从给定 2015 年每个月的特定日期的数据集中提取日期、行使价和要价,其中额外的唯一限制适用于行使价,我们想要最大行使价及其相应的要价。例如,在日期 A,我们希望在日期 B 达到 max(strike price <= x1) 和 max(strike price<=x2)。所以我想写 10 SELECT 语句来实现这个,但是这个似乎效率低下。这是我写的示例查询:
SELECT currentdate,max(strike),ask
FROM opt
WHERE currentdate between '2015-01-16' and '2015-01-16'
AND T='P'
AND strike <=191.55;
当我在 impala 中 运行 时,出现错误:
启动 Impala Shell 没有 Kerberos 身份验证 错误:AnalysisException:select 列表表达式不是由聚合输出生成的(GROUP BY 子句中缺少?):currentdate
我对 Stackover 不是很熟悉,格式不正确,我深表歉意。
如果您的预期输出是当天的最大罢工日期列表和询价,那么您需要按当前日期字段分组,否则查询引擎无法理解您想要的最大值特定的一天。您现在拥有的查询不能 运行 因为如果您不提供多条记录(没有组,您的记录集是单独的行,而不是汇总行),最大值不可用。
您缺少分组依据:
SELECT currentdate,max(strike),ask
FROM opt
WHERE currentdate between '2015-01-16' and '2015-01-16'
AND T='P'
AND strike <=191.55
GROUP BY currentdate;
这也会return一个错误:
但您还需要为询问列提供聚合语句。这可能是最大值、平均值、最小值,具体取决于您的具体用例。
SELECT currentdate,max(strike),min(ask)
FROM opt
WHERE currentdate between '2015-01-16' and '2015-01-16'
AND T='P'
AND strike <=191.55
GROUP BY currentdate;