我有一张table,我的table:
transaction_id | money | team
--------------------------------------------
1 | 10 | A
2 | 20 | B
3 | null | A
4 | 30 | A
5 | 16 | B
6 | 12 | B
当我按团队分组时,我可以通过查询计算max,min:
select team, max(money), min(money) from my_table group by team
然而,我不能做平均值和总和,因为有空。即:
select team, avg(money), sum(money) from my_table group by team
就会失败。
在计算平均值和总和之前,有没有办法更改列类型?i、 e.我希望输出为:
team | avg(money) | sum(money)
--------------------------------------
A | 20 | 40
B | 16 | 48
谢谢!
2条答案
按热度按时间vq8itlhq1#
把总数除以计数:
此处测试:http://sqlfiddle.com/#!9/ba381/4号
qij5mzcb2#
根据cloudera提供的文档,您的查询应该按原样工作。avg函数和sum函数都忽略null。
更新:根据你的评论,我还是不熟悉 Impala 。想必标准sql可以工作。您的错误似乎是数据类型问题。