一个问题的复杂度分为两种:本质复杂度和偶然复杂度,本质复杂度就是必须要做的事,偶然复杂度多为偶然的路径选择而遇到的额外的事,多余做的事情。
类比写SQL做数据分析,SQL模型很复杂多半来自偶然复杂性:比如一个指标模棱两可的口径,只需要和需求方沟通清楚,确定口径即可,没必要埋头苦干,苦思两全的方法这么做多半没有价值。
避免路径依赖,固守老方法而忽略新的高效的工作方法,要多想多借鉴优秀的经验来提高工作效能。
总结了几种SQL的高级写法,让SQL更顺滑。普通版sql VS 高级版sql,一见便知…
1,学会使用CTE
CTE是共享表达式,它可以拆解复杂的SQL逻辑,让自己的SQL简洁易维护。当然也可以实现经典的递归操作。
2,学会用临时函数
运用CREATE TEMPORARY FUNCTION,抽离复杂过程,让SQL更干净。
3,善用 LATERAL VIEW explode()
LATERAL VIEW 不仅可以将列转成多行, 还以达到代替冗余的 union all的功效
4,要学会使用变量
变量会给程序带来灵动性,一次定义多次使用,同时可以做到一次修改,引用都修改的功效
5,不要埋头苦干
遇到问题多思考几分钟,多找找其它方法,是不是有更高效的办法,比如关注「数据指象」收获更多新知识点。。。