使用percentile_cont计算中位数时出现签名匹配错误求助
问题解决:PERCENTILE_CONT函数参数类型不匹配错误
错误原因
你写的SQL里,子查询select round(user_eng_time/1000) from masterdata没有给计算后的列指定别名,外层查询里的x是子查询的表别名,不是列名——这时候x代表的是整个行的结构体(STRUCT
修正方案
方案1:给子查询的列添加别名
给子查询里的计算列指定明确名称,外层查询引用这个列名即可:
select percentile_cont(eng_time_sec, 0.5) over () as median_time_in_seconds from( select round(user_eng_time/1000) as eng_time_sec from masterdata ) as x
方案2:去掉子查询,直接在函数中计算
如果逻辑简单,也可以省去子查询,直接把计算逻辑写到PERCENTILE_CONT的参数里:
select percentile_cont(round(user_eng_time/1000), 0.5) over () as median_time_in_seconds from masterdata
两种方案都能让PERCENTILE_CONT拿到正确的数值类型参数,解决报错问题。
内容的提问来源于stack exchange,提问作者analyst92
相关产品推荐
相关产品推荐

