00:01
这道题呢,叫福利大放送。干嘛呢?Oracle科目如果有低于50分的,则加十分。直到没有50分以下的同学为止。换句话说,只要Oracle有50分以下的同学,是不是就一直加呀?一直加持。哎,这涉及到啥了,是不是涉及到循环了。哎,好,那这道题怎么写一下呢?看我来哈。到这边来。李可尔。怎么做呢?先思考思嘛。啊啊,一般情况下写这个思路啊,这个。如果你不太顺利的话啊,就脑子里边形成的这个思路的话,你用中文先把这个过程看能不能写明白。换成加法程序也是,你要执行什么功能,你就用中文先把这个事描述出来。
01:05
干嘛呀,你看啊,我先用中文给大家描述一遍。他说,Oracle科目如果有低于50分的,则加十分,直到没有50分以下的同学为止。那么我就可以先。我首先我得知道。50分,Oracle。科目。50分以下。的,呃,以下有几个人。有几个人?对吧,首先我得知道有几个人是50分以下的。然后呢,假设。假设。假设有三人。那么我接下来干嘛呢?就是对这。三个人。加十分。对吧。是不是这个思这个思路啊。好,加完十分之后我应该干嘛呢?
02:04
再次。查看。Oracle科目50分以下的有几个人?这我再次查看一下啊。哎。假设刚加过之后有两人了。假设还有两人了,那就是对这两个人。是不是加十分啊。对吧。那么加完十分,接下来我又要干什么了?是不是还是这个过程啊。还是这个过程直到什么时候停止?知道。所有,也就是说。直到啊,直到。Oracle。科目。50分以下的。为零人。
03:01
完事了吧。福利。行改。是不是就这个意思?那现在咱们把这个过程给它换成代码不就行了吗?我这样写分析过来之后啊,你看这一段,这一段是不是就是循环啊。好,看我怎么给它换成代码的啊。首先我得定一个变量,50分以下的有几人呢?不知道哎。Number类型一开始初始化为几?零人。50分以下的人数。50分。以下的人数,哎。人数。OK吧?好,首先第一件事,第一件事我是不是得查一查,50分以下都几呀。那咱们正常写SQ语句呗,查询抗的星。咱先别看那星先星好吧,先看看数据啊,来自于成绩表,条件为。
04:04
什么科目ID等于Oracle?二哥是几啊,这里边儿咱先不写这个子查询了。二哥,咱们直接来看一眼,把这个拿过来看一眼好吧。不是subject。几。三吧,咱直接拿来暂时先用好吧,这块知道怎么替换成子查询吧。咱先写成三好吧,然后这是三科目所有的成绩,而我要的是什么呀?并且成绩要干嘛。小于50吧,是不是这个结果啊。是不是三个人啊?那把这个结果,这个结果我是不是应该复制给这个I呀。不是这个结果啊,应该什么结果啊。是不是应该看星啊?对吧,这康德星的话一直行的几。三没毛病吧,把这个三是不是应该赋值给这个I呀?
05:00
那么这个I是不是就知道了,是不是就到了我第一个目的了。来把这个怎么给的I呢,上午讲过了,查询的一个结果,是不是在这直接into呀into给哎。分号结束,打印一下print,不是不是不是。咋打来?我刚用so来打印一下这个。哎,行吧。来咱这样啊,在这块直接输出吧。叫做50分。50分以下的人数。喂,那就别围了,就冒号吧。OK,把上面这一段执行出来,一直行。这儿呢,几个人?没问题吧?OK。好,那么没问题的话,接下来说对这三个人加十分。加十分。咋弄啊?这玩意儿怎么对这仨人加十分呢?
06:06
这么搞吧。你先修改,你别说对这仨人哈,你就对一个人给他加十分。你就是把这三个对这三个人加十分,其实这三条记录是不是在这已经查出来了。好,怎么加了啊,修改成绩表,设置这个列result set。Result,这是成绩吧?负值为多少?原本的结果。是不是加十啊。呀呀呀,七加十。对吧,好条件是谁被加了这十分啊。是不是就是这个条件呢?Oracle并且小于50分的所有人加十分啊。所以这个条件是一样的。
07:02
OK。那这个语句一执行,这个语句执行是不是这一段就完事了。我是不是对刚才这些人。都加了十分啊,那么这一段是不是搞定了。接下来干嘛?是不是再次查看Oracle有几个人啊?OK,来。这咋办?你看啊,这写着呢,首先查看一下,然后有几个人咱知道了,然后我开始更新,更新完成我是不是再次查看啊。是不是再来一遍,这就再次查看这个人数。然后查完之后呢。又开始更新,更新完成之后呢,又开始查询,是不是这个一直往下走啊。OK,什么时候是个头啊?什么时候是个头啊?没有50分以下的OK。
08:00
所以。这个多了啊。所以你看啊,我这写上了。整个循环体。没问题吧?循环的起的内容是不是就是先更新,再看看有几个人啊。再次更新,看看有几个人呢,所以你看啊,这一段和这一段是不是重复的。所以只留下一遍就可以了,然后在这块控制循环的,开始循环的。结束是吧。OK,这单词错了啊,Look,然后这块写啥?是不是写条件啊,条件什么时候才能进入下边这个。你什么时候加分?I大于零。则加分。不是。是吧?OKI是什么?是不是就是人数啊。哎,人数好,这样哗啦哗啦一顿搞。
09:03
你呢?对吧。最终呢,这个结果成不成?呃,咱们捋一遍啊,捋一遍,从头到尾排读一遍。首先呢为零,然后我查询了50分以下的,一开始咱就假设三人是吧。然后呢,三大于零进来,我将这三人是不是都加了十分啊。然后对这个I再次重新赋值。然后循环进入下一次,对这个I进行判断它是否大于零。如果大于零,说明还有人,50分以下则进入循环体,继续加分。加完分再次查看有几个人,50分以下。然后如果人多的话,是不是进来再分啊,直到什么时候呢。当这句话查询50分以下的为零,人循环回来零大于零条件不成立,则。
10:08
停止。按照这个逻辑没问题吧。好,我先来,咱们把这个记录一下啊。记录啥呢?咱们得确定一下。这几个人咱们一会儿对照着看数据哈。行吧,这几个人。这几个人来给他把这个截图粘一下哈。这是咋截图这玩意儿。哎,有这个截图啊。截图。把这个摘过来啊。P。好,我确定了是不是这仨人这个分啊。来看着啊,我要直行了。执行了。等你。好。完事了,他没没卡死是吧,来咱们再一次执行一下这个查询,观察一下。
11:04
有了吗?没有了吧。好,那把这个分啊去掉,只查科目三的这个所有信息,对照一下刚才这几个分怎么加上来的来。弄哪去了?来看看是多少,63号吧,63号他现在几分了。是54分啊,看看它是不是加上来了,是不是44加十分到54了,再看67。67 55,刚才多少?这哥们可能加了好几次啊。加了好几次,还有一个101101,现在到三十三十五,他应该到到多少。55是吧,超过50分吧。好了,那么我这个程序呢,是不是就搞定了。搞掉了。
12:00
啊,这是这个需求。把这个都留下吧。你要知道刚才我这个做的是什么,这个就是PPT里边的那个练习,叫福利大放。送啊。在这了。好吧,这是这个。
我来说两句