sql常见面试题

**面试题:**
将李四的所有订单改为100,支付状态都改为1
update goods_copy set oorder='100',pay=1 WHERE nname='李四'
--------
查出每一个name每一天购买的订单的数量,和订单总金额
select nname,date,sum(price),COUNT(oorder) from goods_copy  GROUP BY date,nname
----------
查询student表中重名的学生,结果包含id和name,按name,id升序
select id,name from students where in(select name from staudens  group by havingcount(*)>1) order by name;
--------
在student_course表中查询平均分不及格的学生,列出学生id和平均分
select id, avg(coure) avg from student_course group by id  havng(avg<60);
-------SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与聚合函数一起使用。having 子句可以让我们筛选分组后的各组数据。
在student_course表中查询每门课成绩都不低于80的学生id
select id from student_course where not in (select id from student_course where course <80);
-------------
查询每个学生的总成绩,结果列出学生姓名和总成绩 如果使用下面的sql会过滤掉没有成绩的人
select name,sum(score) total
from student,student_course
where student.id=student_course.sid
group by sid;
更保险的做法应该是使用 左外连接
select name,sum(score)
from student left join student_course
on student.id=student_course.sid
group by sid;
------------------------
总成绩最高的学生,结果列出学生id和总成绩 下面的sql效率很低,因为要重复计算所有的总成绩。同理可以查总成绩的前三名。

select sid,sum(score) as sum_score
from student_course group by sid
order by sum_score desc limit 1;
--------------------------
在student_course表查询课程1成绩第2高的学生,如果第2高的不止一个则列出所有的学生
select * from student_course
where cid=1 and score = (
select score from student_course where cid = 1 group by score order by score desc limit 1,1
);
---------------------------



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值