因此,我试图从给定2015年每个月的特定日期的数据集中提取日期、执行价和要价,其中对执行价应用额外的唯一限制,我们需要最大的执行价及其相应的要价。例如,在日期a,我们希望max(执行价格<=x1)和max(执行价格<=x2)在日期b。所以我想写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 中运行这个时,我有一个错误:
在没有kerberos身份验证的情况下启动impala shell错误:analysisexception:选择不是由聚合输出生成的列表表达式(group by子句中缺少?):currentdate
我很抱歉格式不好,不太熟悉堆叠。
1条答案
按热度按时间ahy6op9u1#
如果您的预期输出是一个日期列表,其中包含当天的最大罢工日期和ask,那么您需要按currentdate字段分组,否则查询引擎无法理解您想要的是特定日期的最大罢工日期。现在的查询无法运行,因为如果不提供多个记录(如果没有组,则记录集是单行,而不是摘要行),则max不可用。
你错过了一组:
这也将返回一个错误:
但是您还需要为ask列提供聚合语句。这可能是最大值、平均值、最小值,具体取决于您的具体用例。