当前位置:文章写作网 >日记 >日记 >百度知道sql问题集

百度知道sql问题集

2008-10-28 11:48 作者:tshfang 阅读量:3157 推荐13次 | 我要投稿

一、问题:

A表:科目编码、科目名称

B表:科目编码、科目名称、摘要、借方金额

已知A.科目编码=B.科目编码。科目编码和科目名称为:501-拨出专款、50101-资金、50102-退款、502-支出、50201-专项支出、50202-其他支出

求以下结果:

A.科目编码│科目名称│B.科目编码│B.科目名称│摘要│借方金额

501 拨出专款 50101 资金 …… ……

501 拨出专款 50102 退款 …… ……

502 支出 50201 专项支出 …… ……

502 支出 50202 专项支出 …… ……

回答:

select a.code ,a.name,b.code as bcode,b.name as bname,zhiyao,jiefang

from a right join b on SUBSTRING(b.code,1,3)=a.code

order by a.code,b.code

在oracle的执行结果是:

CODE NAME BCODE BNAME ZHIYAO JIEFANG

501 播出专款 50101 资金 aa 20

501 播出专款 50102 退款 bb 30

502 之处 50201 专项之处 cc 40

502 之处 50202 专项支出 dd 45

二、问题

我想写一个语句,按照时间和推荐倒序排序~

时间字段为:date

推荐字段为:tj

我试过一种:

sql="select * from news order by date,tj desc"

这种不行~

只能按时间排~

请各位高手帮忙~

回答:

select * from new

order by date desc,tj desc;

三、问题

一个事件里要执行多个数据库操作,要用事务处理吗

回答:

如果你的多个操作是互相关联的,比如第一个操作是表a的某个值减少,第二个操作是表b的某个值增加,如果操作二失败了,操作一也要取消。

这种情况必须使用事务处理。

四、问题

若要查找姓名以“王”开头的学生号和姓名,应如何写语句

回答

select 学号,姓名 from 表 where 姓名 like '王%'

select 学号,姓名 from 表 where SUBSTRING(姓名,0,1)='王'

或者使用left()函数。

建议使用函数,而不是like,like的执行效率很慢,尤其数据量大的时候。

五、问题

SQL难题:查询所有学科成绩都不及格的和总分排名前三名的

悬赏分:5 - 解决时间:2008-10-22 18:52

一张表test,有三个字段name,lesson,score, 表的内容如下:

kate 数学 80

tom 语文 60

tom 数学 59

jim 化学 68

jim 语文 70

jim 数学 65

lisa 英语 85

... ... ... ...

(1)查询出所有学科都不及格的

(2)查询出总分排名前三名的

回答

1、都不及格:

select a.name,a.lesson,a.score

from test a,

(select name,count(lesson) as cl from test group by name) b,

(select name,count(lesson) as cl from test where score < 60 group by name) c

where a.name=b.name and a.name=c.name and b.cl=c.cl

2、总分前三:(不太合理,学科不一样,靠得越多,总分越高,业务需求有问题)

select top 3 name,sum(score) as 总分

from test

gropu by name

order by 2

回答者: shaoshuai_bd - 经理 五级 10-22 12:36

第二道题,二楼的写法是sql server的写法,在oracle中是不能执行的,下面是

oracle中的写法

select * from (

select name,sum(score) as z

from a

group by name

order by z desc)

where rownum<=2

其他人在看啥

    《百度知道sql问题集》的评论 (共 0 条)

    • Guest::peifu
    • Guest::piaoliang