我思故我強(qiáng)

          sql_1

          1.一個(gè)表中的Id有多個(gè)記錄,把所有這個(gè)id的記錄查出來(lái),并顯示共有多少條記錄數(shù)。
          select ID,count(*) from Student group by ID having count(*)>1
          select * from(select ID,count(ID) as count from Student group by ID)T

          2.有一張表,里面有3個(gè)字段:語(yǔ)文,數(shù)學(xué),英語(yǔ)。其中有3條記錄分別表示語(yǔ)文70分,數(shù)學(xué)80分,英語(yǔ)58分,請(qǐng)用一條sql語(yǔ)句查詢出這三條記錄并按以下條件顯示出來(lái)(并寫出您的思路):?
          ?? 大于或等于80表示優(yōu)秀,大于或等于60表示及格,小于60分表示不及格。?
          if object_id('tb') is not null drop table tb
          go
          create table tb(yw int,sx int,yy int)
          insert into tb
          select 70,80,58

          select
          (case when yw <60 then '不及格'
          ???????? when yw >= 80 then '優(yōu)秀'
          ???????? else'及格' end) as '語(yǔ)文',
          (case when sx <60 then '不及格'
          ???????? when sx >= 80 then '優(yōu)秀'
          ???????? else'及格' end) as '數(shù)學(xué)',
          (case when yy <60 then '不及格'
          ???????? when yy >= 80 then '優(yōu)秀'
          ???????? else'及格' end) as '英語(yǔ)'
          from tb

          drop table tb
          3.請(qǐng)教一個(gè)面試中遇到的SQL語(yǔ)句的查詢問(wèn)題
          表中有A B C三列,用SQL語(yǔ)句實(shí)現(xiàn):當(dāng)A列大于B列時(shí)選擇A列否則選擇B列,當(dāng)B列大于C列時(shí)選擇B列否則選擇C列。
          select (case when a>b then a else b end),
          (case when b>c then b else c end)
          from tb

          4.為管理崗位業(yè)務(wù)培訓(xùn)信息,建立3個(gè)表:
          S (S#,SN,SD,SA) S#,SN,SD,SA 分別代表學(xué)號(hào)、學(xué)員姓名、所屬單位、學(xué)員年齡

          C (C#,CN ) C#,CN 分別代表課程編號(hào)、課程名稱

          SC ( S#,C#,G ) S#,C#,G 分別代表學(xué)號(hào)、所選修的課程編號(hào)、學(xué)習(xí)成績(jī)

          A. 使用標(biāo)準(zhǔn)SQL嵌套語(yǔ)句查詢選修課程名稱為’稅收基礎(chǔ)’的學(xué)員學(xué)號(hào)和姓名
          B. 使用標(biāo)準(zhǔn)SQL嵌套語(yǔ)句查詢選修課程編號(hào)為’C2’的學(xué)員姓名和所屬單位
          C. 使用標(biāo)準(zhǔn)SQL嵌套語(yǔ)句查詢不選修課程編號(hào)為’C5’的學(xué)員姓名和所屬單位
          D. 使用標(biāo)準(zhǔn)SQL嵌套語(yǔ)句查詢選修全部課程的學(xué)員姓名和所屬單位
          E. 查詢選修了課程的學(xué)員人數(shù)
          F. 查詢選修課程超過(guò)5門的學(xué)員學(xué)號(hào)和所屬單位

          A. select S#,SN from S where S# in(select S# from SC,C where SC.C#=C.C# and CN='稅收基礎(chǔ)')

          B. select S.SN,S.SD from S,SC where S.S#=SC.S# and C#=C2

          C. SELECT SN,SD FROM S where [S#] NOT IN(SELECT [S#] FROM SC WHERE [C#]='C5')
          ? 或者select S.SN,S.SD from S,SC where S.S#=SC.S# and C#!=C5

          D. select SN,SD, from S where (select count(S#) from SC group by S#)=(select count(*) from C group by C#)

          E. select count(distinct S#) from SC

          F. select S#,SD from S where S# in (SELECT [S#] FROM SC GROUP BY [S#] HAVING COUNT(DISTINCT [C#])>5)

          5.問(wèn)題描述:


          S (SNO,SNAME) 學(xué)生關(guān)系。SNO 為學(xué)號(hào),SNAME 為姓名


          C (CNO,CNAME,CTEACHER) 課程關(guān)系。CNO 為課程號(hào),CNAME 為課程名,CTEACHER 為任課教師


          SC(SNO,CNO,SCGRADE) 選課關(guān)系。SCGRADE 為成績(jī)


          A. 找出沒(méi)有選修過(guò)“李明”老師講授課程的所有學(xué)生姓名
          Select SNAME FROM S Where NOT EXISTS ( Select * FROM SC,C Where SC.CNO=C.CNO AND CNAME='李明' AND SC.SNO=S.SNO)

          B. 列出有二門以上(含兩門)不及格課程的學(xué)生姓名及其平均成績(jī)
          Select S.SNO,S.SNAME,AVG_SCGRADE=AVG(SC.SCGRADE) FROM? S ,? SC , (Select SNO FROM SC Where SCGRADE<60 GROUP BY SNO HAVING COUNT(DISTINCT CNO)>=2) A Where S.SNO=A.SNO AND SC.SNO=A.SNO GROUP BY S.SNO,S.SNAME

          C. 列出既學(xué)過(guò)“1”號(hào)課程,又學(xué)過(guò)“2”號(hào)課程的所有學(xué)生姓名
          Select S.SNO,S.SNAME FROM S,(Select SC.SNO? FROM SC,C Where SC.CNO=C.CNO AND C.CNAME IN('1','2') GROUP BY SNO HAVING COUNT(DISTINCT CNO)=2)SC Where S.SNO=SC.SNO
          D. 列出“1”號(hào)課成績(jī)比“2”號(hào)同學(xué)該門課成績(jī)高的所有學(xué)生的學(xué)號(hào)
          Select S.SNO,S.SNAME FROM S,
          (Select SC1.SNOFROM SC SC1,C C1,SC SC2,C C2
          Where SC1.CNO=C1.CNO AND C1.NAME='1'
          AND SC2.CNO=C2.CNO AND C2.NAME='2'
          AND SC1.SCGRADE>SC2.SCGRADE? )? SC
          Where S.SNO=SC.SNO

          E. 列出“1”號(hào)課成績(jī)比“2”號(hào)課成績(jī)高的所有學(xué)生的學(xué)號(hào)及其“1”號(hào)課和“2”號(hào)課的成績(jī)
          Select S.SNO,S.SNAME,SC.[1號(hào)課成績(jī)],SC.[2號(hào)課成績(jī)] FROM S,
          (Select SC1.SNO,[1號(hào)課成績(jī)]=SC1.SCGRADE,[2號(hào)課成績(jī)]=SC2.SCGRADE
          FROM SC SC1,C C1,SC SC2,C C2
          Where SC1.CNO=C1.CNO AND C1.NAME='1'
          AND SC2.CNO=C2.CNO AND C2.NAME='2'
          AND SC1.SCGRADE>SC2.SCGRADE)?? SC
          Where S.SNO=SC.SNO

          6.
          ======
          有如下表記錄:
          ID????????? Name???????? EmailAddress?????????? LastLogon
          100???????? test4?????? test4@yahoo.cn?????? 2007-11-25 16:31:26
          13????????? test1?????? test1@yahoo.cn?????? 2007-3-22 16:27:07
          19????????? test1?????? test1@yahoo.cn?????? 2007-10-25 14:13:46
          42????????? test1?????? test1@yahoo.cn?????? 2007-11-20 14:20:10
          45????????? test2?????? test2@yahoo.cn?????? 2007-4-25 14:17:39
          49????????? test2?????? test2@yahoo.cn?????? 2007-5-25 14:22:36


          用一句sql查詢出每個(gè)用戶最近一次登錄的記錄(每個(gè)用戶只顯示一條最近登錄的記錄)
          方法一:
          SELECT a.* from users? a? inner join
          ????????????????????????????? (SELECT [Name], LastLogon=MAX(LastLogon)??? FROM? users??? GROUP BY [Name])? b
          ?????????????????????????????? on a.[Name]=b.[Name] and a.[LastLogon]=b.[LastLogon]

          方法二:
          SELECT a.* from users? a?? inner join
          ?????????????????????????????? (SELECT? Name,MAX(LogonID) LogonID???? FROM? users??? GROUP BY [Name])? b
          ???????????????????????????? on a.LogonID=b.LogonID
          ???????????????????????????? --where a.LogonId=b.LogonId

          7.現(xiàn)在我們假設(shè)只有一個(gè)table,名為pages,有四個(gè)字段,id, url,title,body。里面儲(chǔ)存了很多網(wǎng)頁(yè),網(wǎng)頁(yè)的url地址,title和網(wǎng)頁(yè)的內(nèi)容,然后你用一個(gè)sql查詢將url匹配的排在最前, title匹配的其次,body匹配最后,沒(méi)有任何字段匹配的,不返回。
          select a.[id],a.mark from
          (
          select [page].[id],100 as mark from [page] where [page].[url] like '%baidu%'
          union
          select [page].[id],50 as mark from [page] where [page].[title] like '%baidu%'
          union
          select [page].[id],10 as mark from [page] where [page].[body] like '%baidu%'
          ) as a? order by mark desc?

          ?

          8.查詢某表中的第30到40行的數(shù)據(jù)
          select top * 10 from (select top * 40 from table order by id asc) table_a order by id desc

          9.對(duì)于教學(xué)數(shù)據(jù)庫(kù)的三個(gè)基本表
               學(xué)生 S(S#,SNAME,AGE,SEX)
               學(xué)習(xí) SC(S#,C#,GRADE)
               課程 C(C#,CNAME,TEACHER)
          試用SQL的查詢語(yǔ)句表達(dá)下列查詢:

          A.檢索LIU老師所授課程的課程號(hào)和課程名。
          ? select C#,CNAME from C where TEACHER='LIU'

          B.檢索年齡大于23歲的男學(xué)生的學(xué)號(hào)和姓名。
          ? select S#,SNAME from S where AGE>23 and SEX='男'

          C.檢索至少選修LIU老師所授課程中一門課程的女學(xué)生姓名。
          ? select SNAME from S left join SC on S.S#=SC.S# left join C on SC.C#=C.C# where S.SEX='女' and C.TEACHER='LIU'

          D.檢索WANG同學(xué)不學(xué)的課程的課程號(hào)。
          ? SELECT C# FROM C WHERE C# NOT IN (SELECT C# FROM SC WHERE S# IN (SELECT S# FROM S WHERE SNAME='WANG'))
          ?
          E.檢索至少選修兩門課程的學(xué)生學(xué)號(hào)。
          ? select distinct SC1.S# from SC as SC1 where (select count(*) from SC as SC2 where SC1.S#=SC2.S#)>=2

          F.檢索全部學(xué)生都選修的課程的課程號(hào)與課程名。
          ? SELECT C.C#,C.CNAME FROM C WHERE NOT EXISTS (SELECT S.S# FROM S WHERE S.S# NOT IN(SELECT SC.S# FROM SC WHERE SC.C# = C.C#))

          G.檢索選修課程包含LIU老師所授課的學(xué)生學(xué)號(hào)?!?br />? select SC.S# from SC,C where SC.C#=C.C# and C.TEACHER='LIU'

          posted on 2009-10-13 13:55 李云澤 閱讀(235) 評(píng)論(0)  編輯  收藏 所屬分類: 面試筆試相關(guān)的

          主站蜘蛛池模板: 顺昌县| 宁远县| 易门县| 大荔县| 永昌县| 石门县| 牡丹江市| 讷河市| 六盘水市| 青田县| 金昌市| 德州市| 西城区| 金山区| 荥经县| 玉溪市| 天峻县| 延庆县| 饶阳县| 枞阳县| 云霄县| 彭泽县| 南京市| 建德市| 仙居县| 容城县| 太谷县| 承德市| 工布江达县| 伊宁县| 聊城市| 会昌县| 昌平区| 黎川县| 石林| 广东省| 龙胜| 莒南县| 洛川县| 克什克腾旗| 增城市|