【网学网提醒】:网学会员,鉴于大家对SQL练习题尽量晒出自己的SQL哦十分关注,会员在此为大家搜集整理了“SQL练习题尽量晒出自己的SQL哦”一文,供大家参考学习!
SQL练习题,尽量晒出自己的SQL哦
8.现有表A:
IDSTATUS
10
19
29
29
29
39
写一个sql语句,要取出STATUS全部为9的ID,例如上面记录中1不满足条件,2、3均满足条件。
9.表结构如下:
企业名称欠费金额是否欠费
a120未
b120是
c60未
a120是
a120是
b120未
要取如下格式该怎么写sql语句(注意:列名都使用中文对应的英文命名)
企业名称应缴金额实缴金额欠费金额是否欠费
a360120240是
b240120120是
c60600未
10.表结构如下:
oidownernumstatus
100021001
100032002
200024003
200034001
100025001
100036001
200027003
希望显示的结果:
oidownerSum_numstatus
10002600完成
10003800完成中
200021100初始
20003400完成
sum_num为相同oid与owner列的num之和;
S_status:若全为1则是完成;
若有一个2则是完成中
若全为3则是初始
12.表结构如下:
表A:Employee_snStartDateEndDate
1'2007-01-02''2007-01-03'
1'2007-01-05''2007-01-06'
1'2007-01-09''2007-01-13'
2'2007-02-02''2007-02-03'
3'2007-04-02''2007-04-03'
表B:Employee_snCreateDate
1'2007-01-02'
1'2007-01-05'
1'2007-01-03'
3'2007-04-02'
1'2007-01-04'
1'2007-01-02'
2'2007-02-02'
要得到的结果:
Employee_snStartDateEndDateCount
1'2007-01-02''2007-01-03'3
1'2007-01-05''2007-01-06'1
1'2007-01-09''2007-01-13'0
2'2007-02-02''2007-02-03'1
3'2007-04-02''2007-04-03'1
注:根据表A中的时间段和员工编号到表B中去统计出对应的员工在该时间段的记录总数.
表A中的员工可能会有多个时间段,但时间段彼此不会重复.
13.表结构如下:
币种金额(本币)金额(外币)
001100500
001200600
013300700
014400800
希望显示的结果:
币种金额
001100
001200
013700
001300
014800
001400
注:001代表本币,其他的都是外币,检索结果中,外币币种都生成2条记录,一条是外币信息一条是本币信息
可以使用任何方法来实现(包括建临时表等)
19.表A:
序号日期营业员收款方式金额
120080201A人民币100
120080201A信用卡100
120080201A美金100
220080201A人民币200
220080201A信用卡200
320080201A美金300
420080201B人民币100
420080201B信用卡100
420080201B美金100
420080201B抵值券100
520080202B人民币200
520080202B信用卡200
520080202B美金200
620080202A信用卡400
620080202A美金400
720080202B人民币300
820080202B信用卡400
820080202B美金400
写一个sql实现小计、合计,效果如下
日期营业员收款方式金额
20080201A人民币300
信用卡300
美金400
B人民币100
信用卡100
美金100
抵值券100
小计1400
20080202A信用卡400
美金400
B人民币500
信用卡600
美金600
小计2500
合计3900
21.表A:
日期单据号业务员应收金额实收金额收款方式汇率找零金额
20080203D1A80.00100.00001120.00
20080203D1A0.000.0001170.00
20080203D1A0.000.0001280.00
20080203D2A10.0010.0000110.00
20080204D1A80.0010.0000110.00
20080204D1A0.0010.0001170.00
20080204D2B90.0030.00001110.00
20080204D2B0.0010.0001170.00
20080205D1A100.0010.0000114.00
20080205D1A0.005.0001170.00
20080205D1A0.005.0001280.00
20080205D1A0.002.0001390.00
表B:
日期单据号商品号数量金额
20080203D1S1140.00
20080203D1S2220.00
20080203D1S3120.00
20080203D2S1110.00
200802
04D1S2260.00
20080204D1S3220.00
20080204D2S2270.00
20080204D2S3520.00
20080205D1S1510.00
20080205D1S2220.00
20080205D1S3130.00
20080205D1S4140.00
业务说明:模拟超市收银系统,以20080205数据举例,D1这张单据总共应收001本币100元,
客户在交钱时分别付了001本币10元,011外币5元,012外币5元,013外币1元,
按照汇率兑换成001本币后总共收了10×1+5×7+5×8+2×9=104元
则需要按001本币找零4元。
写一个sql,查询指定日期段内的销售收款情况,显示结果示例如下:(日期:20080204~20080205)
日期:20080204单据:D1业务员:A
S2260.00
S3220.00
小计80.00
001110.00
011710.00
找零0.00
日期:20080204单据:D2业务员:B
S2270.00
S3520.00
小计90.00
001130.00
011710.00
找零10.00
日期:20080205单据:D1业务员:A
S1510.00
S2220.00
S3130.00
S4140.00
小计100.00
001110.00
01175.00
01285.00
01392.00
找零4.00
尽量晒出自己的SQL,多多交流!
__________________
做自己喜欢的事......喜欢自己做的事......
只看该作者引用回复报告
dingjun123
djゆoracle
来自china
精华贴数8
个人空间0
技术积分17718(86)
社区积分15084(153)
注册日期2006-7-28
论坛徽章:173
#2使用道具发表于2010-6-700:29
面试题?
__________________
剑破冰山火热销售中,目前关注度和近期销量在计算机书籍中NO.1,如需了解,请点击(china-pub、当当、亚马逊、华褚等知名网上书城以及各大书店均有销售)...
全书共20章,520余页,内容比较殷实,覆盖开发和调优常用知识,以及数位作者实战经验总结,详解Oracle开发误区,复杂SQL报表,开发调优必知必会,11g强大SQL新特性等,性价比超高...
大量收购ITPUB8周年纪念章,卖的PM我,直接点击即可PM...
只看该作者引用回复报告
〇〇
精华贴数8
个人空间0
技术积分36849(33)
社区积分6806(331)
注册日期2008-1-16
论坛徽章:129
#3使用道具发表于2010-6-706:51
nocreateandinserttablescriptnoanswer
__________________
剑破冰山—Oracle开发艺术已经上架销售
网购地址:互动电子工业出版社书店卓越亚马逊当当华储
在线阅读:5lcto华储
源代码:博文视点ITPUB
只看该作者引用回复报告
风铃中の鬼
来自北京
精华贴数0
个人空间0
技术积分2138(992)
社区积分18(10739)
注册日期2009-3-29
论坛徽章:10
#4使用道具发表于2010-6-708:58
同楼上。。这么多道题还都用的不同的表。。给个建表和插入数据的脚本呗?
只看该作者引用回复报告
dingjun123
djゆoracle
来自china
精华贴数8
个人空间0
技术积分17718(86)
社区积分15084(153)
注册日期2006-7-28
论
坛徽章:173
#5使用道具发表于2010-6-710:15
有的题目还是有难度的
[本帖最后由dingjun123于2010-6-710:20编辑]
__________________
剑破冰山火热销售中,目前关注度和近期销量在计算机书籍中NO.1,如需了解,请点击(china-pub、当当、亚马逊、华褚等知名网上书城以及各大书店均有销售)...
全书共20章,520余页,内容比较殷实,覆盖开发和调优常用知识,以及数位作者实战经验总结,详解Oracle开发误区,复杂SQL报表,开发调优必知必会,11g强大SQL新特性等,性价比超高...
大量收购ITPUB8周年纪念章,卖的PM我,直接点击即可PM...
只看该作者引用回复报告
liakngkang
灵之舞——小狐狸
雪中飞柔
来自山东青岛
精华贴数0
个人空间0
技术积分931(2654)
社区积分140(3890)
注册日期2009-12-28
论坛徽章:3
#6使用道具发表于2010-6-713:05
[quote]原帖由凝结水晶于2010-6-611:55PM发表
8.现有表A:
IDSTATUS
10
19
29
29
29
39
写一个sql语句,要取出STATUS全部为9的ID,例如上面记录中1不满足条件,2、3均满足条件。
answer:selectidfromtbgroupbyidhavingmax(STATUS)=min(STATUS)andmin(STATUS)=9;
------大家就学习学习newkid脾气好点吧
__________________
在最短的时间达到最高的效率----康康家园
欢迎加入群103566745
只看该作者引用回复报告
liakngkang
灵之舞——小狐狸
雪中飞柔
来自山东青岛
精华贴数0
个人空间0
技术积分931(2654)
社区积分140(3890)
注册日期2009-12-28
论坛徽章:3
#7使用道具发表于2010-6-713:14
9.表结构如下:
企业名称欠费金额是否欠费
a120未
b120是
c60未
a120
是
a120是
b120未
要取如下格式该怎么写sql语句(注意:列名都使用中文对应的英文命名)
企业名称应缴金额实缴金额欠费金额是否欠费
a360120240是
b240120120是
c60600未
answer:
select
企业名称,
sum(欠费金额)应缴金额,
sum(decode(是否欠费,'未',欠费金额,0))实缴金额,
sum(decode(是否欠费,'未',0,欠费金额))欠费金额,
casewhensum(decode(是否欠费,'未',0,欠费金额))>0then'是'else'未'end
fromtb
groupby企业名称
__________________
在最短的时间达到最高的效率----康康家园
欢迎加入群103566745
只看该作者引用回复报告
txlcl
中级会员
精华贴数0
个人空间0
技术积分605(4030)
社区积分529(1848)
注册日期2006-8-24
论坛徽章:1
#8使用道具发表于2010-6-713:15
回复#6liakngkang的帖子
不错,学习啦。
__________________
荣辱不惊,看庭前花开花落,去留无意,望天上云卷云舒。
只看该作者引用回复报告
liakngkang
灵之舞——小狐狸
雪中飞柔
来自山东青岛
精华贴数0
个人空间0
技术积分931(2654)
社区积分140(3890)
注册日期2009-12-28
论坛徽章:3
#9使用道具发表于2010-6-713:24
10.表结构如下:
oidownernumstatus
100021001
100032002
200024003
200034001
100025001
100036001
200027003
希望显示的结果:
oidownerSum_numstatus
10002600完成
10003800完成中
200021100初始
20003400完成
sum_num为相同oid与owner列的num之和;
S_status:若全为1则是完成;
若有一个2则是完成中
若全为3则是初始
answer:
select
oid,
owner,
sum(num)Sum_num,
casewhenmax(status)=min(status)andmin(status)=1then'完成'
whenmax(status)=min(status)andmin(status)=3then'初始'
else'完成中'end
fromtb
groupbyoid,owner
__________________
在最短的时间达到最高的效率----康康家园
欢迎加入群103566745
只看该作者引用回复报告
liakngkang
灵之舞——小狐狸
雪中飞柔
来自山东青岛
精华贴数0
个人空间0
技术积分931(2654)
社区积分140(3890)
注册日期2009-12-28
论坛徽章:3
#10使用道具发表于2010-6-713:30
12.表结构如下:
表A:Employee_snStartDateEndDate
1'2007-01-02''2007-01-03'
1'2007-01-05''2007-01-06'
1'2007-01-09''2007-01-13'
2'2007-02-02''2007-02-03'
3'2007-04-02''2007-04-03'
表B:Employee_snCreateDate
1'2007-01-02'
1'2007-01-05'
1'2007-01-03'
3'2007-04-02'
1'2007-01-04'
1'2007-01-02'
2'2007-02-02'
要得到的结果:
Employee_snStartDateEndDateCount
1'2007-01-02''2007-01-03'3
1'2007-01-05''2007-01-06'1
1'2007-01-09''2007-01-13'0
2'2007-02-02''2007-02-03'1
3'2007-04-02''2007-04-03'1
注:根据表A中的时间段和员工编号到表B中去统计出对应的员工在该时间段的记录总数.
表A中的员工可能会有多个时间段,但时间段彼此不会重复.
answer:
selecta.Employee_sn,a.StartDate,a.EndDate,count(1)
froma,b
wherea.Employee_sn=b.Employee_snandb.CreateDatebetweena.StartDateanda.EndDate
groupbya.Employee_sn,a.StartDate,a.EndDate