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

Hive 如何建立配置单元中点后位数的分布表?,hive,group-by,hiveql,Hive,Group By,Hiveql,配置单元表中有一个从浮点(双精度)转换而来的字符串列。我需要一个表,它表示点后的位数,每个数字都有计数行 +-----+------+--+ | num | _c0 | +-----+------+--+ | 2 | 300 | | 3 | 400 | | 4 | 248 | | 5 | 117 | | 6 | 43 | | NULL| 999 | +-----+------+--+ 有一个函数可以获取列foo length(split(foo, '\\.'

配置单元表中有一个从浮点(双精度)转换而来的字符串列。我需要一个表,它表示点后的位数,每个数字都有计数行

+-----+------+--+
| 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[错误10004]:行1:77无效的表别名或列引用“num”:(可能的列名为:foo、moo、hroo)(状态=42000,代码=10004)


要获得列
foo
中点后的位数分布,正确的查询是什么?

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

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