left semi join
left semi join 是 in(keySet) 的关系,遇到右表重复记录,左表会跳过,而 join 则会一直遍历。这就导致右表有重复值得情况下 left semi join 只产生一条,join 会产生多条,也会导致 left semi join 的性能更高。
比如以下A表和B表进行 join 或 left semi join,然后 select 出所有字段,结果区别如下
注意:蓝色叉的那一列实际是不存在left semi join中的,因为最后 select 的结果只许出现左表。
regexp_replace()
REGEXP_REPLACE(NAME,'(.)','*')
from_unixtime(unix_timestamp('$v_date','yyyyMMdd'),'yyyy-MM-dd')
时间戳转年月日
2021-09-08
去年同期
add_months(from_unixtime(unix_timestamp('$v_date','yyyyMMdd'),'yyyy-MM-dd'),-13)
row_number() over(partition by item_id order by recall_type_cnt desc)
SELECT *, Row_Number() OVER (partition by deptid ORDER BY salary desc) rank FROM employee
|