SQL语句面试题整理-四年经验

前言

面试中偶尔会要求我们写SQL,而工作中其实未必写的很难,我是完全不会复杂SQL,这个时候我们稍微复习下就好。

这篇博客直接给题目和答案,原理啥的没必要分析了,面试能回答就回答,我个人觉得面试问SQL,问的很深的多半是外包。

大家不要过分关注表名和结构,主要看SQL大概怎么写就行了。

各种面试题

1. 给出所有购入商品为两种或两种以上的购物人记录

购物人 商品名称 数量
A 甲 2
B 乙 4

select * from 购物信息 where 购物人 in (select 购物人 from 购物信息 group by 购物人 having count(*) >= 2);

2. 给出成绩全部合格的学生信息(包含姓名、课程、分数)

姓名 课程 分数
张三 语文 81
张三 数学 75

select * from 成绩表 where 姓名 not in (select distinct 姓名 from 成绩表 where 分数 < 60)  
或者:  
select * from 成绩表 where 姓名 in (select 姓名 from 成绩表 group by 姓名 having min(分数) >=60) 

3.给出平均进价在2元以下的商品名称

名称 产地 进价
苹果 烟台 2.5
苹果 云南 1.9

select 名称 from 商品表 group by 名称 having avg(进价) < 2  

关于having语法,这个其实是配合group by去使用的。

4.给出高考总分在600以上的学生准考证号

准考证号 科目 成绩
2006001 语文 119
2006001 数学 108

select 准考证号 from 高考信息表 group by 准考证号 having sum(成绩) > 600  

5.给出高考总分在600以上的学生准考证号(与4的区别是单列记录成绩而不分科目)

准考证号 数学 语文 英语 物理 化学
2006001 108 119 98 127 136
2006002 149 105 110 142 129

select 准考证号 from 高考信息表 where (数学+语文+英语+物理+化学) > 600  

6.查询出该俱乐部里男性会员和女性会员的总数

id gender age
67 M 19
68 F 30

select gender,count(id) from club group by gender  

7.有重复值删除最小的(这个实际业务肯定是自己代码判断)

ID(number型) Name(varchar2型)
1 a
2 b
3 b
4 a
5 c
6 c
要求:执行一个删除语句,当Name列上有相同时,只保留ID这列上值小的
例如:删除后的结果应如下:
ID(number型) Name(varchar2型)
1 a

delete from team where id not in (select min(id) from team group by name)  

https://blog.csdn.net/qiaodaima0/article/details/99670515

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值