南天软件c语言笔试题,南天软件一数据库笔试题

呵呵,居然有了面试,可惜的是在二十选二的情况下我被淘汰了,感觉很难过.对于一个应届没有背景的学生来说,南天对我来说是一个“高地”了,也知道登顶的几率很小,所以说这次失败没什么意外。只希望将来有一天我能被他们承认,这个时间也不要太长,那么不管去不去我都知足了。

源于我的网站:http://programmer.2008red.com/programmer/article_647_2859_1.shtml

先苦一个,现在找工作真是难啊!

好了,昨天去南天软件做了个笔试,有这么个题目,当时做的时候我都晕的没方向了,时间用过了火,所以觉得整个笔试垃圾,复试估计也没戏,不过回来后还是认真再做了一次这个题目。

是这样的,有下面两个表。

20090606105518.GIF

20090606105441.GIF

staff为员工的信息,order为员工业绩,现在想查找出处在前三名业绩的员工信息。

我刚想出来的:

select top 3 id,name,count from(select * from staff as ss join(select [order].id as idd,count([order].id) as [count] from [order]  group by [order].id)s  on s.idd=ss.id)sss order by sss.count desc

我改进后的:

select  id,name,count from(select * from staff as ss join(select top 3 [order].id as idd,count([order].id) as [count] from [order]  group by [order].id order by count desc)s  on s.idd=ss.id)sss order by sss.count desc

很容易看的出来,前者取了很多无用功,很多没有用到的数据也给取出来了,改进后的只取了前三名的信息,不过最好排序,不然结果出的id的顺序为234了

最后的结果为:

20090606105934.GIF

@uonun说的方法很好,还有就是用join on事实上是看了@uonun才明白的。

select staff.id,name,[count] from staff join( select TOP 3 id,count(id) as [count] from [order] group by id order by [count] desc )T on staff.id = T.id order by [count] desc

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值