小于45岁的各个老师所带的大于12岁的学生人数javascript代码怎么
求出小于45岁的各个老师所带的大于12岁的学生人数javascript代码
数据库中有3个表teacher表,student表,tea_stu关系表。
teacher表teaIDnameage
student表stuIDnameage
teacher_student表teaIDstuID
要求用一条sql查询出这样的结果
1.显示的字段要有老师name,age每个老师所带的学生人数
2只列出老师age为40以下,学生age为12以上的记录
预备知识:
1.sql语句是对每一条记录依次处理,条件为真则执行动作(select,,,update)
2.只要是迪卡尔积,就会产生“垃圾”信息,所以,只要迪卡尔积了,我们首先就要想到清除“垃圾”信息
实验准备:
droptableifexiststea_stu;
droptableifexiststeacher;
droptableifexistsstudent;
createtableteacher(teaIDintprimarykey,namevar50),ageint);
createtablestudent(stuIDintprimarykey,namevar50),ageint);
createtabletea_stu(teaIDintreferencesteacher(teaID),stuIDintreferencesstudent(stuID));
intoteachervalues(1,’zxx’,45),(2,’lhm’,25),(3,’wzg’,26),(4,’tg’,27);
intostudentvalues(1,’wy’,11),(2,’dh’,25),(3,’ysq’,26),(4,’mxc’,27);
intotea_stuvalues(1,1),(1,2),(1,3);
intotea_stuvalues(2,2),(2,3),(2,4);
intotea_stuvalues(3,3),(3,4),(3,1);
intotea_stuvalues(4,4),(4,1),(4,2),(4,3);
结果:2à3,3à2,4à3
解题思路:(真实面试答题时,也要写出每个分析步骤,如果纸张不够,就找别人要)
1要会统计分组信息,统计信息放在中间表中:
selectteaid,count(*)fromtea_stugroupbyteaid;
2接着其实应该是筛除掉小于12岁的学生,然后再进行统计,中间表必须与student关联才能得到12岁以下学生和把该学生记录从中间表中剔除,代码是:
selecttea_stu.teaid,count(*)totalfromstudent,tea_stu
wherestudent.stuid=tea_stu.stuidandstudent.age>12groupbytea_stu.teaid
3.接着把上面的`结果做成虚表与teacher进行关联,并筛除大于45的老师
selectteacher.teaid,teacher.name,totalfromteacher,(selecttea_stu.tea
id,count(*)totalfromstudent,tea_stuwherestudent.stuid=tea_stu.stuidandstu
dent.age>12groupbytea_stu.teaid)astea_stu2whereteacher.teaid=tea_stu2.tea
idandteacher.age<45;
JavaScript函数定义
JavaScript函数定义
Function 函数名 (参数,变元){
函数体;.
Return 表达式;
说明:
当调用函数时,所用变量或字面量均可作为变元传递。
函数由关键字Function定义。
函数名:定义自己函数的名字。
参数表,是传递给函数使用或操作的值,其值可以是常量 ,变量或其它表达式。
通过指定函数名(实参)来调用一个函数。
必须使用Return将值返回。
函数名对大小写是敏感的。
【小于45岁的各个老师所带的大于12岁的学生人数javascript代码怎么】相关文章: