锁定老帖子 主题:sql面试题
精华帖 (0) :: 良好帖 (1) :: 隐藏帖 (6)
|
|||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
作者 | 正文 | ||||||||||||||||||||||||||||
发表时间:2009-02-26
最后修改:2009-02-26
id:合同id sname:姓名 smoney :业绩 sprovince:地区
第一道:显示出 业绩 大于同一地区平均值的 合同id 姓名 地区 业绩
第二道:把同一地区的 平均业绩 地区 插入到新表中 (新表只包含两个字段即:平均业绩 地区)
请写出sql语句
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|||||||||||||||||||||||||||||
返回顶楼 | |||||||||||||||||||||||||||||
发表时间:2009-02-26
1. select T1.* from table_name T1, ( select avg(smoney),sprovince from table_name group by sprovince)T2 where T1.smoney > T2.smoney and T1.sprovince = T2.sprovince;
2.create table table_name_2 from (select sprovince, avg(smoney) avgmoney from table_name_1 group by sprovince); |
|||||||||||||||||||||||||||||
返回顶楼 | |||||||||||||||||||||||||||||
发表时间:2009-02-26
uhlan 写道 1. select T1.* from table_name T1, ( select avg(smoney),sprovince from table_name group by sprovince)T2 where T1.smoney > T2.smoney and T1.sprovince = T2.sprovince;
2.create table table_name_2 from (select sprovince, avg(smoney) avgmoney from table_name_1 group by sprovince); 第二个 怎么使建出来的表sprovince为主键 我也不会写 |
|||||||||||||||||||||||||||||
返回顶楼 | |||||||||||||||||||||||||||||
发表时间:2009-02-26
zhangx 写道 uhlan 写道 1. select T1.* from table_name T1, ( select avg(smoney),sprovince from table_name group by sprovince)T2 where T1.smoney > T2.smoney and T1.sprovince = T2.sprovince;
2.create table table_name_2 from (select sprovince, avg(smoney) avgmoney from table_name_1 group by sprovince); 第二个 怎么使建出来的表sprovince为主键 我也不会写 我运行了一下,提示:T2.smoney不存在,有一点小问题 在你的代码启发下,改成 select T1.* from test T1, ( select avg(smoney) s ,sprovince from test group by sprovince)T2 where T1.smoney > T2.s and T1.sprovince = T2.sprovince; 就正确了,真的很感谢你, |
|||||||||||||||||||||||||||||
返回顶楼 | |||||||||||||||||||||||||||||
发表时间:2009-02-26
晕,手写的,有点错误没注意
|
|||||||||||||||||||||||||||||
返回顶楼 | |||||||||||||||||||||||||||||
发表时间:2009-02-28
有这么简单吗?
|
|||||||||||||||||||||||||||||
返回顶楼 | |||||||||||||||||||||||||||||
发表时间:2009-02-28
select t.id,t.sname,t.smoney,t.sprovince from test t,(select sprovince,avg(smoney)avgmoney from test group by sprovince) a where t.sprovince=a.sprovince and smoney>avgmoney
create table newtable as (select avg(smoney) avgmoney,sprovince from test group by sprovince) |
|||||||||||||||||||||||||||||
返回顶楼 | |||||||||||||||||||||||||||||
发表时间:2009-03-01
1.select a.*
from test a where a.smoney > (select avg(t.smoney) from test t where t.sprovince = a.sprovince) 2.create table test1 as (select avg(smoney) avgmoney,sprovince from test group by sprovince) |
|||||||||||||||||||||||||||||
返回顶楼 | |||||||||||||||||||||||||||||
发表时间:2009-03-01
第一道:显示出 业绩 大于同一地区平均值的 合同id 姓名 地区 业绩
select t2.id,t2.name,t2.province,t2.money, t1.avg_money from t_employee t2, (select t.province, avg(t.money) avg_money from t_employee t group by t.province) t1 where t2.province = t1.province and t2.money > t1.avg_money 第二道:把同一地区的 平均业绩 地区 插入到新表中 (新表只包含两个字段即:平均业绩 地区) create table t_employee_avg as (select avg(e.money) avg_money, e.province from t_employee e group by e.province); |
|||||||||||||||||||||||||||||
返回顶楼 | |||||||||||||||||||||||||||||
发表时间:2009-03-02
1:
select A.* from test A where A.smoney > (select avg(B.smoney) from test B where B.sprovince = B.sprovince) "第二道:把同一地区的 平均业绩 地区 插入到新表中 (新表只包含两个字段即:平均业绩 地区)" 2.题目中要求是向新表中插入,所以这个表是存在的。不防取名新表名为newsell,字段“平均业绩 地区”为“smoney,sprovince”. insert into newsell (smoney,sprovince) select avg(smoney)avgmoney,sprovince from sell group by sprovince; |
|||||||||||||||||||||||||||||
返回顶楼 | |||||||||||||||||||||||||||||