如何为配置单元中点后的位数建立分布表?

vxbzzdmp  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(258)

配置单元表中有一个从float(double)1转换的字符串列。我需要一个表,表示数字后的数字点与计数行为每个数字。

+-----+------+--+
| num | _c0  |
+-----+------+--+
|  2  | 300  |
|  3  | 400  |
|  4  | 248  |
|  5  | 117  |
|  6  |  43  |
| NULL| 999  |
+-----+------+--+

有一个函数可以获取列中点后的位数 foo ```
length(split(foo, '\.')[1])

因此,我试图获取上表的失败是

select length(split(foo, '\.')[1]) as num, count(num) from tbl_bar group by num;

错误消息是
错误:编译语句时出错:失败:semanticexception[error 10004]:行1:77无效的表别名或列引用“num”:(可能的列名为:foo、moo、hroo)(state=42000,code=10004)
按列中点后的位数得到分布的正确查询是什么 `foo` ?
46scxncf

46scxncf1#

列别名不能为空 select 在同一级别的查询中。改用实际计算。

select length(split(foo, '\\.')[1]) as num, count(*) 
from tbl_bar 
group by length(split(foo, '\\.')[1]);

相关问题