论坛首页 招聘求职论坛

sql面试题

浏览 22115 次
锁定老帖子 主题:sql面试题
精华帖 (0) :: 良好帖 (1) :: 隐藏帖 (6)
作者 正文
   发表时间:2009-02-26   最后修改:2009-02-26

 

id sname smoney sprovince
1 zhangsan 2098 A
2 lisi 3000 B
3 wangwu 6789 C
4 liumazi 4587 C
5 dongjiu 3298 B
6 shiga 4567 A

 

 

id:合同id  sname:姓名     smoney :业绩     sprovince:地区

 

第一道:显示出  业绩 大于同一地区平均值的 合同id  姓名 地区 业绩

 

 

第二道:把同一地区的  平均业绩 地区 插入到新表中 (新表只包含两个字段即:平均业绩 地区)

 

 

请写出sql语句

 

   发表时间: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);

0 请登录后投票
   发表时间: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为主键
             我也不会写   
0 请登录后投票
   发表时间: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;
就正确了,真的很感谢你,
0 请登录后投票
   发表时间:2009-02-26  
晕,手写的,有点错误没注意
0 请登录后投票
   发表时间:2009-02-28  
有这么简单吗?
0 请登录后投票
   发表时间: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)
0 请登录后投票
   发表时间: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)
0 请登录后投票
   发表时间: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);
0 请登录后投票
   发表时间: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;
0 请登录后投票
论坛首页 招聘求职版

跳转论坛:
Global site tag (gtag.js) - Google Analytics