前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SQL|数据科学岗位的一道基础笔试题

SQL|数据科学岗位的一道基础笔试题

作者头像
算法与编程之美
发布2019-11-25 22:03:16
5500
发布2019-11-25 22:03:16
举报

问题描述

前些时日,在玩手机的时候,偶然看到了一个博主的推文。文章的题目中,提到了“竟然连SQL都不会”。由于这段时间在学习数据库,所以对于SQL等字眼特别敏感。所以,对于这篇文章,我自然要读一读。

文章中讲到的其他方面这里不再过多的赘述。我从里面copy出了一道求职相关岗位时,会遇到的一道基础笔试题。我将在本文中对该题进行详细的解答。

题目如下:

这里有一个成绩信息表info_table,每条记录是学生的某科目成绩信息,包括学生学号stu_num、科目名称sub_name、学生的该科目分数score等字段,请你写个SQL取一下每个科目分数前三的学生信息。

解决方案

相信大家都已读了题目,为了方便大家的理解以及接下来对相应SQL语句的验证,我们这里使用SQL Server Studio进行演示。

首先,我们先按照题目建库建表。

create database course;use course;create table info_table(stu_num char(20) primary key,stu_name char(10),score int check(score between 0 and 100))

图1 数据库及表

我为了后续的验证的方便,这里就再向该表中插入数据。三个科目(Math、English、PE),学生5人(001-005)。

这里需要注意的是,因为PRIMARY KEY 约束 'PK__info_tab__89C2F6B20425A276',所以在第一列sub_num就不能出现重复。这里我们将键PK__info_tab__89C2F6B20425A276直接删除就好。数据插好后的表如下:

图二 info_table表的所有数据

准备工作就绪,现在就正式开始查询。在查询前,我们要明确三个问题:查什么?从哪里查?条件是什么?通过题目,显然有:查的是学生信息,从info_table表中查,条件是每个科目分数第一。我给出的查询如下:

select *from(select stu_num,sub_name,score,row_number()over(partition by sub_nameorder by score desc)as numfrom info_table)T where T.num <= 3order by sub_name

图三 查询结果

结语

对于SQL,基础的语法学起来很简单,简单的查询上手也很容易。难就难在如何根据具体需求去写查询,并且为了达到同一查询目的,SQL语句并不唯一,这时你是否又能选出最佳的那一个呢?俗话说的好,“基础不扎实,地动山摇。”对于SQL我们一定要夯实基础,再进行熟练掌握。祝你成功!

END

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-11-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法与编程之美 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档