一家软件开发公司的面试题(雄起)

今天去一家公司面试了,由于很紧张当时竟然没做出来,懊悔不已,后来后痛定思痛,要把它做出来,只为学习用:
题目:根据所给的两个表,求出所示效果,附图:
表一:flights

flightdate      scn    fmoney
2009-01-09   01      523.0
2009-08-15   01     708.0
2010-08-02   02     199.0

表二:signment

scn  sname
01     英国
02     美国

 

结果:
flightdate  sname   fmoney
2010     美国 199.0
2009     英国 1231.0


create table flights(flightdate date,scn varchar(10),fmoney decimal(10,1))
insert into flights values('2009-01-09','01' ,  523)
insert into flights values('2009-08-15','01' ,  708)
insert into flights values('2010-08-02','02' ,  199)

go
create table signment(scn varchar(10),sname varchar(10))
insert into signment values('01' , '英国' )
insert into signment values('02' , '美国' )
go
--===================================
/*结果
------------------------------------
2010 美国 199.0
2009 英国 1231.0
------------------------------------
*/

--方法一:
select y,sname,sum(fmoney) as money from
(select substring(convert(varCHAR,b.flightdate,120),1,4) as y,a.sname,b.fmoney  from signment a,flights b where a.scn=b.scn) as tb
group by y,sname

--方法二:
select  SUBSTRING(CONVERT(varchar, ta.flightdate,120),1,4),tb.sname, SUM(ta.fmoney)
from flights ta,signment tb
where ta.scn=tb.scn
group by SUBSTRING(CONVERT(varchar, ta.flightdate,120),1,4),tb.sname

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值