表中一共兩個字段,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中不存在這種錯誤。