论坛首页 招聘求职论坛

sql面试题

浏览 22114 次
锁定老帖子 主题:sql面试题
精华帖 (0) :: 良好帖 (1) :: 隐藏帖 (6)
作者 正文
   发表时间:2009-11-30  
select t.* from table_name t1 join
( select sprovince, avg(smoney) avg_smoney from table_name group by sprovince ) t2
on (t1.sprovince = t2.sprovince and t1.smoney > t2.avg_smoney);

create table new_table_name as
select avg_smoney, sprovince from
(select avg(smoney) avg_smoney, sprovince from table_name group by sprovince);
0 请登录后投票
   发表时间:2009-12-29  
明显送分题嘛
0 请登录后投票
   发表时间:2010-01-02  
select a.id,a.sname,a.sprovince,b.avg_money
from table_a a,(
select avg(smoney) avg_money,sprovince
from table
group by sprovince
)b
where a.sprovince=b.sprovince
and a.smoney >b.avg_money

/*
新表table_已存在时的情况,如果新表不存在则按照楼上那些朋友的方法
create
tabe_b(avg_money,sprovince)
*/
insert into tabe_b values(
select avg(smoney),sprovince
from table
group by sprovince
);
0 请登录后投票
   发表时间:2010-01-03  
多老的帖子了
0 请登录后投票
   发表时间:2010-01-06  
第一道:显示出 业绩 大于同一地区平均值的 合同id  姓名 地区 业绩

SELECT A.ID, A.SNAME, A.SPROVINCE, A.SMONEY
      FROM TT A
     WHERE SMONEY > (SELECT SUM(B.SMONEY) / COUNT(1)
                       FROM TT B
                      WHERE B.SPROVINCE = A.SPROVINCE);

            ID SNAME SP SMONEY
    ---------- -------------------- -- ----------

             3 WANGWU  C 6789
             5 DONGJIU B 3298
             6 SHIGA   A 4567

第二道:把同一地区的 平均业绩 地区 插入到新表中 (新表只包含两个字段即:平均业绩 地区)
CREATE TABLE TT_SUM
    AS
    SELECT SPROVINCE, SUM(SMONEY)/COUNT(1) AVG_PRO
      FROM TT
    GROUP BY SPROVINCE;

    SQL> select * from tt_sum;

    SP AVG_PRO
    -- ----------

    A 3332.5
    B 3149
    C 5688

注:自己扩展了几道问题(五道),欢迎浏览。
http://blog.chinaunix.net/u1/53979/showart.php?id=2142515

0 请登录后投票
   发表时间:2010-01-28  
cartonwang 写道
第一道:显示出  业绩 大于同一地区平均值的 合同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 请登录后投票
   发表时间:2010-01-29  
MySQL 5.1通过:
1.SELECT b.smoney,b.sprovince FROM test.biz_tbl b
inner join
(select avg(smoney) as avgMoney,sprovince as sprovinceId from test.biz_tbl a group by sprovince) c
on
b.sprovince = c.sprovinceId
and
b.smoney > c.avgMoney

2.insert into test.avgmoney_tbl (avgmoney,sprovince) SELECT b.smoney,b.sprovince FROM test.biz_tbl b
inner join
(select avg(smoney) as avgMoney,sprovince as sprovinceId from test.biz_tbl a group by sprovince) c
on
b.sprovince = c.sprovinceId
and
b.smoney > c.avgMoney
0 请登录后投票
   发表时间:2010-02-10  
thinkaw 写道

第一道
SELECT A.ID, A.SNAME, A.SPROVINCE, A.SMONEY
      FROM TT A
     WHERE SMONEY > (SELECT SUM(B.SMONEY) / COUNT(1)
                       FROM TT B
                      WHERE B.SPROVINCE = A.SPROVINCE);
第二道
CREATE TABLE TT_SUM
    AS
    SELECT SPROVINCE, SUM(SMONEY)/COUNT(1) AVG_PRO
      FROM TT
    GROUP BY SPROVINCE;


相关子查询
子查询建表
0 请登录后投票
论坛首页 招聘求职版

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