我思故我強

          導航

          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          統計

          公告

          公告


          本博客在此聲明:
          所有文章均為轉摘
          只做資料收集使用

          常用鏈接

          留言簿(1)

          文章分類(196)

          文章檔案(164)

          相冊

          我收藏的網址

          搜索

          積分與排名

          最新評論

          sql_1

          1.一個表中的Id有多個記錄,把所有這個id的記錄查出來,并顯示共有多少條記錄數。
          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個字段:語文,數學,英語。其中有3條記錄分別表示語文70分,數學80分,英語58分,請用一條sql語句查詢出這三條記錄并按以下條件顯示出來(并寫出您的思路):?
          ?? 大于或等于80表示優秀,大于或等于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 '優秀'
          ???????? else'及格' end) as '語文',
          (case when sx <60 then '不及格'
          ???????? when sx >= 80 then '優秀'
          ???????? else'及格' end) as '數學',
          (case when yy <60 then '不及格'
          ???????? when yy >= 80 then '優秀'
          ???????? else'及格' end) as '英語'
          from tb

          drop table tb
          3.請教一個面試中遇到的SQL語句的查詢問題
          表中有A B C三列,用SQL語句實現:當A列大于B列時選擇A列否則選擇B列,當B列大于C列時選擇B列否則選擇C列。
          select (case when a>b then a else b end),
          (case when b>c then b else c end)
          from tb

          4.為管理崗位業務培訓信息,建立3個表:
          S (S#,SN,SD,SA) S#,SN,SD,SA 分別代表學號、學員姓名、所屬單位、學員年齡

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

          SC ( S#,C#,G ) S#,C#,G 分別代表學號、所選修的課程編號、學習成績

          A. 使用標準SQL嵌套語句查詢選修課程名稱為’稅收基礎’的學員學號和姓名
          B. 使用標準SQL嵌套語句查詢選修課程編號為’C2’的學員姓名和所屬單位
          C. 使用標準SQL嵌套語句查詢不選修課程編號為’C5’的學員姓名和所屬單位
          D. 使用標準SQL嵌套語句查詢選修全部課程的學員姓名和所屬單位
          E. 查詢選修了課程的學員人數
          F. 查詢選修課程超過5門的學員學號和所屬單位

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

          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.問題描述:


          S (SNO,SNAME) 學生關系。SNO 為學號,SNAME 為姓名


          C (CNO,CNAME,CTEACHER) 課程關系。CNO 為課程號,CNAME 為課程名,CTEACHER 為任課教師


          SC(SNO,CNO,SCGRADE) 選課關系。SCGRADE 為成績


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

          B. 列出有二門以上(含兩門)不及格課程的學生姓名及其平均成績
          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. 列出既學過“1”號課程,又學過“2”號課程的所有學生姓名
          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”號課成績比“2”號同學該門課成績高的所有學生的學號
          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”號課成績比“2”號課成績高的所有學生的學號及其“1”號課和“2”號課的成績
          Select S.SNO,S.SNAME,SC.[1號課成績],SC.[2號課成績] FROM S,
          (Select SC1.SNO,[1號課成績]=SC1.SCGRADE,[2號課成績]=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查詢出每個用戶最近一次登錄的記錄(每個用戶只顯示一條最近登錄的記錄)
          方法一:
          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.現在我們假設只有一個table,名為pages,有四個字段,id, url,title,body。里面儲存了很多網頁,網頁的url地址,title和網頁的內容,然后你用一個sql查詢將url匹配的排在最前, title匹配的其次,body匹配最后,沒有任何字段匹配的,不返回。
          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行的數據
          select top * 10 from (select top * 40 from table order by id asc) table_a order by id desc

          9.對于教學數據庫的三個基本表
               學生 S(S#,SNAME,AGE,SEX)
               學習 SC(S#,C#,GRADE)
               課程 C(C#,CNAME,TEACHER)
          試用SQL的查詢語句表達下列查詢:

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

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

          C.檢索至少選修LIU老師所授課程中一門課程的女學生姓名。
          ? 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同學不學的課程的課程號。
          ? SELECT C# FROM C WHERE C# NOT IN (SELECT C# FROM SC WHERE S# IN (SELECT S# FROM S WHERE SNAME='WANG'))
          ?
          E.檢索至少選修兩門課程的學生學號。
          ? select distinct SC1.S# from SC as SC1 where (select count(*) from SC as SC2 where SC1.S#=SC2.S#)>=2

          F.檢索全部學生都選修的課程的課程號與課程名。
          ? 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老師所授課的學生學號。 
          ? select SC.S# from SC,C where SC.C#=C.C# and C.TEACHER='LIU'

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

          主站蜘蛛池模板: 太湖县| 沙坪坝区| 霍州市| 泗水县| 泰宁县| 子洲县| 上高县| 赣州市| 雷山县| 大石桥市| 江西省| 金堂县| 三台县| 丹棱县| 丹巴县| 孝昌县| 毕节市| 宝丰县| 连江县| 家居| 元阳县| 永新县| 运城市| 彭阳县| 株洲市| 文水县| 平塘县| 高邮市| 衡南县| 买车| 灌云县| 板桥市| 曲阜市| 泰安市| 阳山县| 边坝县| 托克逊县| 吉水县| 平阳县| 湖州市| 深泽县|