关于sql的面试题求高手解答

哎哟,这问题问的,一看就是数据库那块儿的事。
得,我就给你聊聊这个。

第一个查询,这是从学生表里筛选出年龄小于2 0岁的学生,然后只显示学号和年龄。
这操作简单,就像你从一堆人里挑出还没到2 0岁的,然后只记下他们的学号和年龄。
代码是这样的:
sql selectSno, Sage from student where Sage < 2> 第二个查询,这个稍微复杂一点。
它要从学生表、课程表和选课记录表里选出学生姓名、课程名称和成绩。
这个查询相当于你在图书馆借书,要找到谁借了哪本书,这本书叫什么名字,然后你还得知道这本书的作者。

sql select s.Sname, c.Cname, SC.grade from students s, course c, SC where s.Sno = SC.Sno and c.Cno = SC.Cno;
第三个查询,这个就更高级了。
它要从图书表和作者表里选出那些年龄小于平均年龄的作者的姓名、图书名和出版社。
这个操作就像你想要找出那些年轻作者写的书,然后只看这些书的信息。

sql select 作者.作者姓名, 图书.图书名,图书.出版社 from 图书,作者 where 图书.作者编号 = 作者.作者编号 and 作者.作者编号 in ( select 作者编号 from 作者 where 年龄 < (select AVG(年龄)from 作者) );
这些查询都是基于SQL语言的,是数据库操作的基础。
说实话,我当时也没想明白这些复杂的查询,但是用多了就熟了。
希望这些解释对你有帮助!

滴滴出行面试题--SQL

那天在地铁上,看到一位哥们儿拿着手机在滴滴出行APP里点来点去,我就在想,这背后得有多少数据在运转呢。
比如,他点的车是从哪儿出发的,用了多长时间,有没有取消订单,这些数据都能反映出什么?
我记得有一次,我在做数据分析的时候,遇到了一个SQL问题,那真是让我头疼不已。
我手里有一份数据,是关于滴滴出行的订单信息,得算出应答率和完单率。
结果,我写了个错误百出的SQL,不是时间格式不对,就是逻辑搞反了。
我花了几个小时才弄明白,原来应该是这样计算的:
sql select sum(case when grab_time '1 9 7 0-01 -01 00:00:00' then 1 else 0 end) / count() as 应答率, sum(case when finish_time '1 9 7 0-01 -01 00:00:00' then 1 else 0 end) / count() as 完单率 from didi where call_time between '2 01 8 -03 -05 ' and '2 01 8 -03 -1 2 ';
这让我突然想到,数据预处理的重要性。
如果一开始数据就错了,那后面的分析都是白费。
还有,计算指标的时候,一定要搞清楚分子分母是什么,别像我当时那样,搞错了逻辑。

还有个事,我之前还做过呼叫应答时间的计算,那个也让我印象深刻。
得用timestampdiff函数,或者根据你用的数据库来选择合适的函数,记得列名也别搞错了。

sql select sum(timestampdiff(second, call_time, grab_time)) / sum(case when grab_time '1 9 7 0-01 -01 00:00:00' then 1 else 0 end) as 平均呼叫应答时间_秒 from didi where grab_time '1 9 7 0-01 -01 00:00:00';
最后,我还做过用户分类,用的是RFM模型,这个模型挺有意思的,能帮你分析用户的价值。

sql -
计算 R(最近使用时间距今天数) select passenger_id, datediff(current_date, max(day_calltime)) as R from didi group by passenger_id;
-
计算 F(月均打车次数) select passenger_id, count(order_id) / datediff(max(day_calltime), min(day_calltime)) 3 0 as F from didi group by passenger_id;
-
计算 M(总乘车时长) select passenger_id, sum(timestampdiff(second, call_time, finish_time)) as M_seconds from didi where finish_time '1 9 7 0-01 -01 00:00:00' group by passenger_id;
总结一下,数据预处理很重要,指标计算要搞清楚分子分母,用户分类可以试试RFM模型。
不过,我还是挺好奇的,这些数据到底能反映出什么有趣的规律呢?