加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sqlserver 数据库面试题目

发布时间:2020-12-12 13:16:30 所属栏目:MsSql教程 来源:网络整理
导读:? ? 今天参加完面试,遇到了一些sql题,现把这些题目一一列出,希望有人看到,如果你在面试过程中碰巧遇到此类问题,那么就直接秒杀吧,哈哈。 ? ? 首先简历一个stuscore表。其中name为姓名,subject为科目,score为成绩。 ??create?table?stuscore(????????

? ? 今天参加完面试,遇到了一些sql题,现把这些题目一一列出,希望有人看到,如果你在面试过程中碰巧遇到此类问题,那么就直接秒杀吧,哈哈。

? ? 首先简历一个stuscore表。其中name为姓名,subject为科目,score为成绩。

??create?table?stuscore(
?????????name?varchar(20),?????????subject?varchar(20),?????????score?int
?????)

? ? 1、查找出有两门成绩小于60分的学生的所有成绩的平均成绩

? ? 思路:首先求出有两门成绩小于60分的学生姓名,然后在求其平均成绩

??select?name,avg(score)?from?stuscore?where?name?in
????(select?name?from?stuscore?where?score?<?60?group?by?name?having?count(*)?>=?2)
group?by?name

? ? 2、查询每个学生最大分数的科目及分数

? ? 思路:首先获取每个学生最大的分数值,然后在连接查询

select?a.name,a.subject,a.score?from?stuscore?a,????(select?name?max(score)?score?from?stuscore?group?by?name)?b
where?a.name?=?b.name?and?a.score?=?b.score

? ? 3、-- 行列转换

select?name?as?'姓名',???????max(case?subject?when?'语文'??then?score?else?0?end)?as?'语文',???????max(case?subject?when?'数学'?then?score?else?0?end)?as?'数学',???????max(case?subject?when?'英语'?then?score?else?0?end)?as?'英语'
from?stuscore?group?by?name

? ? 说明:这里加上max函数的原因是group by name。具体可以看下group by的用法以及注意事项

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读