sql面试题Word格式文档下载.docx

上传人:b****6 文档编号:21644065 上传时间:2023-01-31 格式:DOCX 页数:15 大小:21.83KB
下载 相关 举报
sql面试题Word格式文档下载.docx_第1页
第1页 / 共15页
sql面试题Word格式文档下载.docx_第2页
第2页 / 共15页
sql面试题Word格式文档下载.docx_第3页
第3页 / 共15页
sql面试题Word格式文档下载.docx_第4页
第4页 / 共15页
sql面试题Word格式文档下载.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

sql面试题Word格式文档下载.docx

《sql面试题Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《sql面试题Word格式文档下载.docx(15页珍藏版)》请在冰豆网上搜索。

sql面试题Word格式文档下载.docx

deletetablenamewhere自动编号notin(selectmin(自动编号)fromtablenamegroupby学号,姓名,课程编号,课程名称,分数)

一个叫department的表,里面只有一个字段name,一共有4条纪录,分别是a,b,c,d,对应四个球对,现在四个球对进行比赛,用一条sql语句显示所有可能的比赛组合.

你先按你自己的想法做一下,看结果有我的这个简单吗?

答:

selecta.name,b.name

fromteama,teamb

wherea.name<

b.name

请用SQL语句实现:

从TestDB数据表中查询出所有月份的发生额都比101科目相应月份的发生额高的科目。

请注意:

TestDB中有很多科目,都有1-12月份的发生额。

AccID:

科目代码,Occmonth:

发生额月份,DebitOccur:

发生额。

数据库名:

JcyAudit,数据集:

Select*fromTestDB

selecta.*

fromTestDBa

(selectOccmonth,max(DebitOccur)Debit101ccurfromTestDBwhereAccID='

101'

groupbyOccmonth)b

wherea.Occmonth=b.Occmonthanda.DebitOccur>

b.Debit101ccur

************************************************************************************

面试题:

怎么把这样一个表儿

year 

monthamount

1991 

1.1

1.2

1.3

1.4

1992 

2.1

2.2

2.3

2.4

查成这样一个结果

yearm1 

m2 

m3 

m4

19911.11.21.31.4

19922.12.22.32.4

答案一、

selectyear,

(selectamountfrom 

aaamwheremonth=1 

andm.year=aaa.year)asm1,

aaamwheremonth=2 

andm.year=aaa.year)asm2,

aaamwheremonth=3 

andm.year=aaa.year)asm3,

aaamwheremonth=4 

andm.year=aaa.year)asm4

fromaaa 

groupbyyear

这个是ORACLE 

中做的:

select*from(selectname,yearb1,lead(year)over

(partitionbynameorderbyyear)b2,lead(m,2)over(partitionbynameorderbyyear)b3,rank()over(

partitionbynameorderbyyear)rkfromt)whererk=1;

精妙的SQL语句!

精妙SQL语句 

作者:

不详发文时间:

2003.05.2910:

55:

05

说明:

复制表(只复制结构,源表名:

a新表名:

b)

SQL:

select*intobfromawhere1<

>

1

拷贝表(拷贝数据,源表名:

a目标表名:

insertintob(a,b,c)selectd,e,ffromb;

显示文章、提交人和最后回复时间

selecta.title,a.username,b.adddatefromtablea,(selectmax(adddate)adddatefromtablewheretable.title=a.title)b

外连接查询(表名1:

a表名2:

selecta.a,a.b,a.c,b.c,b.d,b.ffromaLEFTOUTJOINbONa.a=b.c

日程安排提前五分钟提醒

select*from日程安排wheredatediff('

minute'

f开始时间,getdate())>

5

两张关联表,删除主表中已经在副表中没有的信息

deletefrominfowherenotexists(select*frominfobzwhereinfo.infid=infobz.infid)

--

SELECTA.NUM,A.NAME,B.UPD_DATE,B.PREV_UPD_DATE

FROMTABLE1,

(SELECTX.NUM,X.UPD_DATE,Y.UPD_DATEPREV_UPD_DATE

FROM(SELECTNUM,UPD_DATE,INBOUND_QTY,STOCK_ONHAND

FROMTABLE2

WHERETO_CHAR(UPD_DATE,'

YYYY/MM'

)=TO_CHAR(SYSDATE,'

))X,

(SELECTNUM,UPD_DATE,STOCK_ONHAND

)=

TO_CHAR(TO_DATE(TO_CHAR(SYSDATE,'

)¦

¦

'

/01'

'

YYYY/MM/DD'

)-1,'

))Y,

WHEREX.NUM=Y.NUM(+)

ANDX.INBOUND_QTY+NVL(Y.STOCK_ONHAND,0)<

X.STOCK_ONHAND)B

WHEREA.NUM=B.NUM

select*fromstudentinfowherenotexists(select*fromstudentwherestudentinfo.id=student.id)and系名称='

"

&

strdepartmentname&

'

and专业名称='

strprofessionname&

orderby性别,生源地,高考总成绩

从数据库中去一年的各单位电话费统计(电话费定额贺电化肥清单两个表来源)

SELECTa.userper,a.tel,a.standfee,TO_CHAR(a.telfeedate,'

yyyy'

)AStelyear,

SUM(decode(TO_CHAR(a.telfeedate,'

mm'

),'

01'

a.factration))ASJAN,

02'

a.factration))ASFRI,

03'

a.factration))ASMAR,

04'

a.factration))ASAPR,

05'

a.factration))ASMAY,

06'

a.factration))ASJUE,

07'

a.factration))ASJUL,

08'

a.factration))ASAGU,

09'

a.factration))ASSEP,

10'

a.factration))ASOCT,

11'

a.factration))ASNOV,

12'

a.factration))ASDEC

FROM(SELECTa.userper,a.tel,a.standfee,b.telfeedate,b.factration

FROMTELFEESTANDa,TELFEEb

WHEREa.tel=b.telfax)a

GROUPBYa.userper,a.tel,a.standfee,TO_CHAR(a.telfeedate,'

四表联查问题:

select*fromaleftinnerjoinbona.a=b.brightinnerjoincona.a=c.cinnerjoindona.a=d.dwhere.....

得到表中最小的未使用的ID号

SELECT(CASEWHENEXISTS(SELECT*FROMHandlebWHEREb.HandleID=1)THENMIN(HandleID)+1ELSE1END)asHandleID

FROMHandle

WHERENOTHandleIDIN(SELECTa.HandleID-1FROMHandlea)

*******************************************************************************

有两个表A和B,均有key和value两个字段,如果B的key在A中也有,就把B的value换为A中对应的value

这道题的SQL语句怎么写?

update 

set 

b.value=(select 

a.value 

from 

where 

a.key=b.key) 

b.id 

in(select 

b,a 

b.key=a.key);

***************************************************************************

高级sql面试题

原表:

courseidcoursenamescore

-------------------------------------

1java70

2oracle90

3xml40

4jsp30

5servlet80

为了便于阅读,查询此表后的结果显式如下(及格分数为60):

courseidcoursenamescoremark

---------------------------------------------------

1java70pass

2oracle90pass

3xml40fail

4jsp30fail

5servlet80pass

写出此查询语句

没有装ORACLE,没试过

selectcourseid,coursename,score,decode(sign(score-60),-1,'

fail'

pass'

)asmarkfromcourse

完全正确

SQL>

desccourse_v

NameNull?

Type

-----------------------------------------------------------------------------

COURSEIDNUMBER

COURSENAMEVARCHAR2(10)

SCORENUMBER

select*fromcourse_v;

COURSEIDCOURSENAMESCORE

------------------------------

selectcourseid,coursename,score,decode(sign(score-60),-1,'

)asmarkfromcourse_v;

COURSEIDCOURSENAMESCOREMARK

----------------------------------

5servlet80pass

idproidproname

11M

12F

21N

22G

31B

32A

查询后的表:

idpro1pro2

1MF

2NG

3BA

写出查询语句

解决方案

sql求解

表a

列a1a2

记录1a

1b

2x

2y

2z

用select能选成以下结果吗?

1ab

2xyz

使用pl/sql代码实现,但要求你组合后的长度不能超出oraclevarchar2长度的限制。

下面是一个例子

createorreplacetypestrings_tableistableofvarchar2(20);

/

createorreplacefunctionmerge(pvinstrings_table)returnvarchar2

is

lsvarchar2(4000);

begin

foriin1..pv.countloop

ls:

=ls||pv(i);

endloop;

returnls;

end;

createtablet(idnumber,namevarchar2(10));

insertintotvalues(1,'

Joan'

);

Jack'

Tom'

insertintotvalues(2,'

Rose'

Jenny'

columnnamesformata80;

selectt0.id,merge(cast(multiset(selectnamefromtwheret.id=t0.id)asstrings_table))names

from(selectdistinctidfromt)t0;

droptypestrings_table;

dropfunctionmerge;

droptablet;

用sql:

Wellifyouhaveathoreticalmaximum,whichIwouldassumeyouwouldgiventhelegibilityoflistinghundredsofemployeesinthewayyoudescribethenyes.ButtheSQLneedstousetheLAGfunctionforeachemployee,henceahundredempsahundredLAGs,sokindofbulky.

Thisexampleusesamaxof6,andwouldneedmorecutnpastingtodomorethanthat.

selectdeptno,dname,emps

2from(

3selectd.deptno,d.dname,rtrim(e.ename||'

'

||

4lead(e.ename,1)over(partitionbyd.deptno

5orderbye.ename)||'

6lead(e.ename,2)over(partitionbyd.deptno

7orderbye.ename)||'

8lead(e.ename,3)over(partitionbyd.deptno

9orderbye.ename)||'

10lead(e.ename,4)over(partitionbyd.deptno

11orderbye.ename)||'

12lead(e.ename,5)over(partitionbyd.deptno

13orderbye.ename),'

)emps,

14row_number()over(partitionbyd.deptno

15orderbye.ename)x

16fromempe,deptd

17whered.deptno=e.deptno

18)

19wherex=1

20/

DEPTNODNAMEEMPS

------------------------------------------------------------

10ACCOUNTINGCLARK,KING,MILLER

20RESEARCHADAMS,FORD,JONES,ROONEY,SCOTT,SMITH

30SALESALLEN,BLAKE,JAMES,MARTIN,TURNER,WARD

also

先createfunctionget_a2;

createorreplacefunctionget_a2(tmp_a1number)

returnvarchar2

Col_a2varchar2(4000);

Col_a2:

='

;

forcurin(selecta2fromunite_awherea1=tmp_a1)

loop

Col_a2=Col_a2||cur.a2;

returnCol_a2;

endget_a2;

selectdistincta1,get_a2(a1)fromunite_a

1ABC

2EFG

3KMN

一个SQL面试题

去年应聘一个职位未果,其间被考了一个看似简单的题,但我没有找到好的大案.

不知各位大虾有无好的解法?

题为:

有两个表,t1,t2,

Tablet1:

SELLER|NON_SELLER

----------

AB

AC

AD

BA

BC

BD

CA

CB

CD

DA

DB

DC

Tablet2:

SELLER|COUPON|BAL

-----------------------

A9100

B9200

C9300

D9400

A9.5100

B9.520

A1080

要求用SELECT语句列出如下结果:

------如A的SUM(BAL)为

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 工作计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1