HiveSql使用max函數失效的問題,返回結果999

表中一共兩個字段,tag_name和tag_value,查詢出指定tag_name下,tag_value值最大的記錄

通過以下sql語句,查詢出結果爲999,不正常

select tag_name, max(a.tag_value) from (
select tag_name, tag_value_num from
hdp_teu_dpd_feature_db.da_wanxiang_druid_number_input where dt='20200317' and tag_name='ajk_esf_browse_num'
) a
group by tag_name
;

找了半天原因最後發現,max函數查詢故障,原因在於tag_value在hive表裏是string類型,將其強轉成bigint類型之後再用max函數就可以了,如下

select tag_name, max(a.tag_value_num) from (
select tag_name, CAST(tag_value AS BIGINT) tag_value_num from
hdp_teu_dpd_feature_db.da_wanxiang_druid_number_input where dt='20200317' and tag_name='ajk_esf_browse_num'
) a
group by tag_name
;

ps:max函數與group by一起使用數據有誤差的情況,在mysql中存在,但是在hivesql中不存在這種錯誤。

關於group by 和max函數一起使用的坑

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章