SQL vs. HQL 语法对比

入园6年了,之前都是查问题,看别人的分享,现在终于开始写第一篇博客~

其实一直都有记录的习惯,但平时都记在Evernote里,也会有纸质的笔记本,但是发现这些笔记也就给我提供了查询和记录的功能,自己并没有经常去回顾。如果经营一个博客的话,可能会经常过来看看,而且分享出来的东西会让我有种责任感,写出来之前也会追根求源,仔细斟酌,小心求证。

最近正好在核对用户画像标签,需要写SQL和HQL来比对,发现两者之前有蛮多语法的区别,正好等着跑数据也很花费时间,那就把遇到的问题都总结出来吧。这篇会不定期更新~以后也会把Evernote里自己的学习笔记更新上来,涉及商业分析思维、数据分析、统计学、机器学习、摄影、心理学、英语,甚至还有知乎Live的笔记,stay tuned!

  • Hive不支持to_char
    • SQL中会通过to_char讲日期类型转换为字符串,但Hive中的日期本来就是字符串类型,直接截取即可。
    • 截取日期的话Hive直接用substr(column_name, start, length)
--SQL
select to_char(sysdate, 'yyyy-MM-dd HH24:mi:ss') from dual
select to_char(sysdate, 'yyyymm') from dual --return year and month

--Hive
select substr(sysdate, 0, 6) from dual --return year and month
  • case when和聚合函数一起用的情况
    • 其实算是hive和sql共同的一个语法,刚才遇到了觉得写法很奇特就记录一下来
    • case when和聚合函数一起用的时候,聚合要写在外面
select sum(
    case when f.card_type in ('01', '02') 
    then f.pay_amt
    end
) ceadit_amt
from fact_trans_detail f
原文地址:https://www.cnblogs.com/houyaxin/p/6781927.html