当前位置:
首页
>>
每日看点 >> sql复杂查询语句看不懂,想不出是什么知识欠缺?
sql复杂查询语句看不懂,想不出是什么知识欠缺?
卡卷网
每日看点
111
太太太太太太太巧了。。。。
我可能是数据分析界,最能理解从SQL入门到工作中写SQL中间就差着一个"复杂SQL“这句话的人了。当年为了写”复杂SQL“,的是为了工作中写”复杂SQL“,整整花了我300大洋,求教了一个老鸟才彻底的把我的SQL能力惊醒了。不要一步到位思考复杂SQL
其实SQL也是分为入门-进阶-实战3个步骤的
----分隔符----
为什么简单SQL会写一到工作就废
如果我没有猜错,90%的人都看过下面这本SQL神书:
另外99%的人都用过下面这些SQL练习:
[
自学SQL网(教程视频练习全套)
](自学SQL)
这个特点是较清晰简单,中文的,马上可以练习,主要训练查询能力
sqlzoo练习,牛客网SQL面试题。。。。
-----非常非常不幸,我也是这些练习的重度用户----
如这个:
自学SQL网(教程视频练习全套)
我的是从头到尾,把所有的练习题目过了一遍,感觉自身的SQL水平飞速上升。那感觉的是没有哪个实际问题可以难倒我了。。
直到工作中遇到了”复杂SQL“,才彻底败下阵来。
我就举一个例子:
SELECTsum(Domestic_sales+International_sales)assum_sale,director,
count(*)ascount,
sum(Domestic_sales+International_sales)/count(*)asg_sale
FROMmoviesleftjoinoxoffonmovies.id=oxoff.movie_id
groupydirector
hingcount>1
orderyg_sale
desclimit1
----第一次看到这个SQL什么感觉?
好家伙,好像一切我见过的SQL知识点都用上了!但是我这个简单SQL的能力也彻底不知道怎么解释了。
幸好得到高人指点,最核心的一个思想是,不管多复杂的一个SQL,先要归结到最简单的SQL法则上。
凡是sql都分为,select,from,where3段,你复杂的sql也是这3段。
只不过,复杂sql这3段都不简单,那既然这样,我们就把它分开来解决就好了。
如上面的复杂sql,我们先解决from这一段,
SELECT*
FROMmoviesleftjoinoxoffonmovies.id=oxoff.movie_id
where1
你不要关心select和where的情况下,只关心这个from,并且想象一下这个from的联表之后生成了新的tale,我们叫t1吧。
这会,这条sql是不是一下就简单了。
---t1现在看一下t1的内容
把两个表连在一起,形成表t1,现在请你记住这个t1,我们的select和where作都在t1上进行
----现在我们把group等结果集作放到一边,我们先只关心select部分。
SELECTsum(Domestic_sales+International_sales)assum_sale,director,
count(*)ascount,
sum(Domestic_sales+International_sales)/count(*)asg_sale
FROMt1
#放一边