不会写复杂的SQL，该怎么学习？
太太太太太太太太巧了。。。。 我可能是数据分析界，最能理解从SQL入门 到 工作中写SQL中间就差着一个 "复杂SQL“ 这句话的人了。当年为了写”复杂SQL“， 真的是为了工作中写 ”复杂SQL“， 整整花了我 300大洋，求教了一个老鸟才彻底的把我的SQL能力惊醒了。 ---- 分隔符---- 如果我没有猜错，90%的人都看过下面这本SQL神书： 另外99%的人都用过下面这些SQL练习网站： [ ](自学SQL) sqlzoo练习网站，牛客网SQL面试题 。。。。 ----- 非常非常不幸，我也是这些练习网站的重度用户---- 比如这个: 我真的是从头到尾，把所有的练习题目过了一遍，感觉自身的SQL水平飞速上升。那感觉真的是没有哪个实际问题可以难倒我了。。 直到工作中遇到了 ”复杂SQL“， 才彻底败下阵来。 我就举一个例子： ---- 第一次看到这个SQL什么感觉？ 好家伙，好像一切我见过的SQL知识点都用上了！但是我这个简单SQL的能力也彻底不知道怎么解释了。 幸好得到高人指点，最核心的一个思想是，不管多复杂的一个SQL，先要归结到最简单的SQL法则上。 凡是sql都分为，select，from，where 3段，你复杂的sql也是这3段。 只不过，复杂sql这3段都不简单，那既然这样，我们就把它分开来解决就好了。 比如上面的复杂sql，我们先解决from这一段， 你不要关心select 和 where的情况下，只关心这个from，并且想象一下这个from的联表之后生成了新的table，我们叫 t1吧。 这会，这条sql是不是一下就简单了。  --- t1 现在看一下t1的内容 把两个表连在一起，形成表t1，现在请你记住这个t1，我们的select 和 where操作都在t1上进行 ---- 现在我们把group等结果集操作放到一边，我们先只关心select部分。 你看，这个简单SQL就是做了几个统计，每一个函数拆开来是不是很简单  --- 接下来，我们把select里的算法放在一边，我们去看看结果集的分组和排序 一个复杂sql其实都是由简单的部分组成，只要你按照这个方法一层层的拆解，你会发现复杂sql不过如此！ ---- 未完待续