日期:2014-05-17  浏览次数:20430 次

几个简单的数据库面试问题
用户表:
用户编号      姓名         出生日期
 1          张三         1988-5-9
 2          李四         1985-3-5
……          ……          ……

消费表:
ID         用户编号       金额
1             2         198523
2             1         45686
3             2         2568

假设以上数据表(不考虑范式),请完成一下sql语句:
1.统计所有用户每次平均消费金额

2.请查询出金额大于1000的所有用户姓名

------解决方案--------------------
select 姓名,金额=sum(金额),sum(金额)/count(1)[平均消费] from 用户表 join 消费表 on 用户表.用户编号=消费表.用户编号  group by 姓名

select 姓名 from 用户表 a where (select sum(金额) from 消费表 b where b.用户编号=a.用户编号)>1000
------解决方案--------------------
select 姓名,sum(金额)/count(1) [平均消费]
from 用户表 left join 消费表 on 用户表.用户编号=消费表.用户编号
group by 姓名

select 姓名
from 用户表 left join 消费表 on 用户表.用户编号=消费表.用户编号
where 金额>1000

------解决方案--------------------
select 姓名,sum(金额)/count(1) [平均消费]
from 用户表 left join 消费表 on 用户表.用户编号=消费表.用户编号
group by 姓名
 
select 姓名
from 用户表 left join 消费表 on 用户表.用户编号=消费表.用户编号
where 金额>1000