卡卷网
当前位置:卡卷网 / 每日看点 / 正文

sql复杂查询语句看不懂,想不出是什么知识欠缺?

作者:卡卷网发布时间:2025-01-01 15:32浏览数量:76次评论数量:0次

太太太太太太太巧了。。。。

我可能是数据分析界,最能理解从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 #放一边

你看,这个简单SQL就是做了几个计,每一个函数拆开来是不是很简单

---接下来,我们把select里的算法放在一边,我们去看看结果集的分组和排序

SELECT# FROMt1 groupydirector hingcount>1 orderyg_sale desclimit1

一个复杂sql其实都是由简单的部分组成,只要你按照这个方法一层层的拆解,你会发现复杂sql不过如此!

----未完待续

END

免责声明:本文由卡卷网编辑并发布,但不代表本站的观点和立场,只提供分享给大家。

评论 打赏
卡卷网

卡卷网 主页 联系他吧

请记住:卡卷网 Www.Kajuan.Net

相关推荐

欢迎 发表评论:

请填写验证码