中文永久免费观看_国产人妻久久精品二区三区特黄_狠狠综合久久久久综合网浪潮_超清少妇爆乳无码av无码专区_一区二区三区色视频免费_国产亚洲一级二级三级_18禁美女裸体网站无遮挡_国语精品自产拍在线观看性色_亚洲精品乱码久久久久99_日本日本乱码伦视频免费

保函網(wǎng)

SQL查詢面試題與答案

發(fā)布時間:2025-10-22 | 來源:互聯(lián)網(wǎng)轉(zhuǎn)載和整理

SQL查詢面試題與答案

  SQL語言是一種數(shù)據(jù)庫查詢和程序設(shè)計語言,用于存取數(shù)據(jù)以及查詢、更新和管理關(guān)系數(shù)據(jù)庫系統(tǒng);同時也是數(shù)據(jù)庫腳本文件的擴展名。下面是我搜集的SQL查詢面試題與答案,歡迎大家閱讀。

  SQL查詢面試題與答案一  1.一道SQL語句面試題,關(guān)于groupby表內(nèi)容:

  2005-05-09勝

  2005-05-09勝

  2005-05-09負(fù)

  2005-05-09負(fù)

  2005-05-10勝

  2005-05-10負(fù)

  2005-05-10負(fù)

  如果要生成下列結(jié)果,該如何寫sql語句?

  勝負(fù)

  2005-05-0922

  2005-05-1012

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

  createtable#tmp(rqvarchar(10),shengfunchar(1))

  insertinto#tmpvalues('2005-05-09','勝')

  insertinto#tmpvalues('2005-05-09','勝')

  insertinto#tmpvalues('2005-05-09','負(fù)')

  insertinto#tmpvalues('2005-05-09','負(fù)')

  insertinto#tmpvalues('2005-05-10','勝')

  insertinto#tmpvalues('2005-05-10','負(fù)')

  insertinto#tmpvalues('2005-05-10','負(fù)')

  1)selectrq,sum(casewhenshengfu='勝'then1else0end)'勝',sum(casewhenshengfu='負(fù)'then1else0end)'負(fù)'from#tmpgroupbyrq

  2)selectN.rq,N.勝,M.負(fù)from(

  selectrq,勝=count(*)from#tmpwhereshengfu='勝'groupbyrq)Ninnerjoin

  (selectrq,負(fù)=count(*)from#tmpwhereshengfu='負(fù)'groupbyrq)MonN.rq=M.rq

  3)selecta.col001,a.a1勝,b.b1負(fù)from

  (selectcol001,count(col001)a1fromtemp1wherecol002='勝'groupbycol001)a,

  (selectcol001,count(col001)b1fromtemp1wherecol002='負(fù)'groupbycol001)b

  wherea.col001=b.col001

  2.請教一個面試中遇到的SQL語句的查詢問題

  表中有ABC三列,用SQL語句實現(xiàn):當(dāng)A列大于B列時選擇A列否則選擇B列,當(dāng)B列大于C列時選擇B列否則選擇C列。

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

 ?。螅澹欤澹悖?casewhena>bthenaelsebend),

  (casewhenb>cthenbeslecend)

  fromtable_name

  3.面試題:一個日期判斷的sql語句?

  請取出tb_send表中日期(SendTime字段)為當(dāng)天的所有記錄?(SendTime字段為datetime型,包含日期與時間)

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

  select*fromtbwheredatediff(dd,SendTime,getdate())=0

  4.有一張表,里面有3個字段:語文,數(shù)學(xué),英語。其中有3條記錄分別表示語文70分,數(shù)學(xué)80分,英語58分,請用一條sql語句查詢出這三條記錄并按以下條件顯示出來(并寫出您的思路):

  大于或等于80表示優(yōu)秀,大于或等于60表示及格,小于60分表示不及格。

  顯示格式:

  語文數(shù)學(xué)英語

  及格優(yōu)秀不及格

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

 ?。螅澹欤澹悖?/p>

  (casewhen語文>=80then'優(yōu)秀'

  when語文>=60then'及格'

  else'不及格')as語文,

  (casewhen數(shù)學(xué)>=80then'優(yōu)秀'

  when數(shù)學(xué)>=60then'及格'

  else'不及格')as數(shù)學(xué),

  (casewhen英語>=80then'優(yōu)秀'

  when英語>=60then'及格'

  else'不及格')as英語,

  fromtable

  5.在sqlserver2000中請用sql創(chuàng)建一張用戶臨時表和系統(tǒng)臨時表,里面包含兩個字段ID和IDValues,類型都是int型,并解釋下兩者的區(qū)別?

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

  用戶臨時表:createtable#xx(IDint,IDValuesint)

  系統(tǒng)臨時表:createtable##xx(IDint,IDValuesint)

  區(qū)別:

  用戶臨時表只對創(chuàng)建這個表的用戶的Session可見,對其他進程是不可見的.

  當(dāng)創(chuàng)建它的進程消失時這個臨時表就自動刪除.

  全局臨時表對整個SQLServer實例都可見,但是所有訪問它的Session都消失的時候,它也自動刪除.

  6.sqlserver2000是一種大型數(shù)據(jù)庫,他的`存儲容量只受存儲介質(zhì)的限制,請問它是通過什么方式實現(xiàn)這種無限容量機制的。

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

  它的所有數(shù)據(jù)都存儲在數(shù)據(jù)文件中(*.dbf),所以只要文件夠大,SQLServer的存儲容量是可以擴大的.

  SQLServer2000數(shù)據(jù)庫有三種類型的文件:

  主要數(shù)據(jù)文件

  主要數(shù)據(jù)文件是數(shù)據(jù)庫的起點,指向數(shù)據(jù)庫中文件的其它部分。每個數(shù)據(jù)庫都有一個主要數(shù)據(jù)文件。主要數(shù)據(jù)文件的推薦文件擴展名是.mdf。

  次要數(shù)據(jù)文件

  次要數(shù)據(jù)文件包含除主要數(shù)據(jù)文件外的所有數(shù)據(jù)文件。有些數(shù)據(jù)庫可能沒有次要數(shù)據(jù)文件,而有些數(shù)據(jù)庫則有多個次要數(shù)據(jù)文件。次要數(shù)據(jù)文件的推薦文件擴展名是.ndf。

  日志文件

  日志文件包含恢復(fù)數(shù)據(jù)庫所需的所有日志信息。每個數(shù)據(jù)庫必須至少有一個日志文件,但可以不止一個。日志文件的推薦文件擴展名是.ldf。

  7.請用一個sql語句得出結(jié)果

  從table1,table2中取出如table3所列格式數(shù)據(jù),注意提供的數(shù)據(jù)及結(jié)果不準(zhǔn)確,只是作為一個格式向大家請教。

  如使用存儲過程也可以。

  table1

  月份mon部門dep業(yè)績yj

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

  一月份0110

  一月份0210

  一月份035

  二月份028

  二月份049

  三月份038

  table2

  部門dep部門名稱dname

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

  01國內(nèi)業(yè)務(wù)一部

  02國內(nèi)業(yè)務(wù)二部

  03國內(nèi)業(yè)務(wù)三部

  04國際業(yè)務(wù)部

  table3(result)

  部門dep一月份二月份三月份

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

  0110nullnull

  02108null

  03null58

  04nullnull9

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

  1)

  selecta.部門名稱dname,b.業(yè)績yjas'一月份',c.業(yè)績yjas'二月份',d.業(yè)績yjas'三月份'

  fromtable1a,table2b,table2c,table2d

  wherea.部門dep=b.部門depandb.月份mon='一月份'and

  a.部門dep=c.部門depandc.月份mon='二月份'and

  a.部門dep=d.部門depandd.月份mon='三月份'and

  2)

  selecta.dep,

  sum(casewhenb.mon=1thenb.yjelse0end)as'一月份',

  sum(casewhenb.mon=2thenb.yjelse0end)as'二月份',

  sum(casewhenb.mon=3thenb.yjelse0end)as'三月份',

  sum(casewhenb.mon=4thenb.yjelse0end)as'四月份',

  sum(casewhenb.mon=5thenb.yjelse0end)as'五月份',

  sum(casewhenb.mon=6thenb.yjelse0end)as'六月份',

  sum(casewhenb.mon=7thenb.yjelse0end)as'七月份',

  sum(casewhenb.mon=8thenb.yjelse0end)as'八月份',

  sum(casewhenb.mon=9thenb.yjelse0end)as'九月份',

  sum(casewhenb.mon=10thenb.yjelse0end)as'十月份',

  sum(casewhenb.mon=11thenb.yjelse0end)as'十一月份',

  sum(casewhenb.mon=12thenb.yjelse0end)as'十二月份',

  fromtable2aleftjointable1bona.dep=b.dep

  8.華為一道面試題

  一個表中的Id有多個記錄,把所有這個id的記錄查出來,并顯示共有多少條記錄數(shù)。

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

  selectid,Count(*)fromtbgroupbyidhavingcount(*)>1

 ?。螅澹欤澹悖?from(selectcount(ID)ascountfromtablegroupbyID)TwhereT.count>1

  SQL查詢面試題與答案二  1、查詢不同老師所教不同課程平均分從高到低顯示

  SELECTmax(Z.T#)AS教師ID,MAX(Z.Tname)AS教師姓名,C.C#AS課程ID,MAX(C.Cname)AS課程名稱,AVG(Score)AS平均成績

  FROMSCAST,CourseASC,TeacherASZ

  whereT.C#=C.C#andC.T#=Z.T#

  GROUPBYC.C#

  ORDERBYAVG(Score)DESC

  2、查詢?nèi)缦抡n程成績第3名到第6名的學(xué)生成績單:企業(yè)管理(001),馬克思(002),UML(003),數(shù)據(jù)庫(004)

  [學(xué)生ID],[學(xué)生姓名],企業(yè)管理,馬克思,UML,數(shù)據(jù)庫,平均成績

  SELECTDISTINCTtop3

  SC.S#As學(xué)生學(xué)號,

  Student.SnameAS學(xué)生姓名,

  T1.scoreAS企業(yè)管理,

  T2.scoreAS馬克思,

  T3.scoreASUML,

  T4.scoreAS數(shù)據(jù)庫,

  ISNULL(T1.score,0)+ISNULL(T2.score,0)+ISNULL(T3.score,0)+ISNULL(T4.score,0)as總分

  FROMStudent,SCLEFTJOINSCAST1

  ONSC.S#=T1.S#ANDT1.C#='001'

  LEFTJOINSCAST2

  ONSC.S#=T2.S#ANDT2.C#='002'

  LEFTJOINSCAST3

  ONSC.S#=T3.S#ANDT3.C#='003'

  LEFTJOINSCAST4

  ONSC.S#=T4.S#ANDT4.C#='004'

  WHEREstudent.S#=SC.S#and

  ISNULL(T1.score,0)+ISNULL(T2.score,0)+ISNULL(T3.score,0)+ISNULL(T4.score,0)

  NOTIN

  (select

  DISTINCT

  TOP15WITHTIES

  ISNULL(T1.score,0)+ISNULL(T2.score,0)+ISNULL(T3.score,0)+ISNULL(T4.score,0)

  FROMsc

  LEFTJOINscAST1

  ONsc.S#=T1.S#ANDT1.C#='k1'

  LEFTJOINscAST2

  ONsc.S#=T2.S#ANDT2.C#='k2'

  LEFTJOINscAST3

  ONsc.S#=T3.S#ANDT3.C#='k3'

  LEFTJOINscAST4

  ONsc.S#=T4.S#ANDT4.C#='k4'

  ORDERBYISNULL(T1.score,0)+ISNULL(T2.score,0)+ISNULL(T3.score,0)+ISNULL(T4.score,0)DESC);

  3、統(tǒng)計列印各科成績,各分?jǐn)?shù)段人數(shù):課程ID,課程名稱,[100-85],[85-70],[70-60],[<60]

  SELECTSC.C#as課程ID,Cnameas課程名稱

  ,SUM(CASEWHENscoreBETWEEN85AND100THEN1ELSE0END)AS[100-85]

  ,SUM(CASEWHENscoreBETWEEN70AND85THEN1ELSE0END)AS[85-70]

  ,SUM(CASEWHENscoreBETWEEN60AND70THEN1ELSE0END)AS[70-60]

  ,SUM(CASEWHENscore<60THEN1ELSE0END)AS[60-]

  FROMSC,Course

  whereSC.C#=Course.C#

  GROUPBYSC.C#,Cname;

  4、查詢學(xué)生平均成績及其名次

  SELECT1+(SELECTCOUNT(distinct平均成績)

  FROM(SELECTS#,AVG(score)AS平均成績

  FROMSC

  GROUPBYS#

  )AST1

  WHERE平均成績>T2.平均成績)as名次,

  S#as學(xué)生學(xué)號,平均成績

  FROM(SELECTS#,AVG(score)平均成績

  FROMSC

  GROUPBYS#

  )AST2

  ORDERBY平均成績desc;

  5、查詢各科成績前三名的記錄:(不考慮成績并列情況)

  SELECTt1.S#as學(xué)生ID,t1.C#as課程ID,Scoreas分?jǐn)?shù)

  FROMSCt1

  WHEREscoreIN(SELECTTOP3score

  FROMSC

  WHEREt1.C#=C#

  ORDERBYscoreDESC

  )

  ORDERBYt1.C#;

  6、查詢每門課程被選修的學(xué)生數(shù)

  selectc#,count(S#)fromscgroupbyC#;

  7、查詢出只選修了一門課程的全部學(xué)生的學(xué)號和姓名

  selectSC.S#,Student.Sname,count(C#)AS選課數(shù)

  fromSC,Student

  whereSC.S#=Student.S#groupbySC.S#,Student.Snamehavingcount(C#)=1;

  8、查詢課程編號002的成績比課程編號001課程低的所有同學(xué)的學(xué)號、姓名;

  SelectS#,Snamefrom(selectStudent.S#,Student.Sname,score,(selectscorefromSCSC_2whereSC_2.S#=Student.S#andSC_2.C#='002')score2

  fromStudent,SCwhereStudent.S#=SC.S#andC#='001')S_2wherescore2

  9、查詢所有課程成績小于60分的同學(xué)的學(xué)號、姓名;

  selectS#,Sname

  fromStudent

  whereS#notin(selectStudent.S#fromStudent,SCwhereS.S#=SC.S#andscore>60);

  10、查詢沒有學(xué)全所有課的同學(xué)的學(xué)號、姓名;

  selectStudent.S#,Student.Sname

  fromStudent,SC

  whereStudent.S#=SC.S#groupbyStudent.S#,Student.Snamehavingcount(C#)<(selectcount(C#)fromCourse);

  11、查詢至少有一門課與學(xué)號為1001的同學(xué)所學(xué)相同的同學(xué)的學(xué)號和姓名;

  selectS#,SnamefromStudent,SCwhereStudent.S#=SC.S#andC#inselectC#fromSCwhereS#='1001';

  12、查詢至少學(xué)過學(xué)號為001同學(xué)所有一門課的其他同學(xué)學(xué)號和姓名;

  selectdistinctSC.S#,Sname

  fromStudent,SC

  whereStudent.S#=SC.S#andC#in(selectC#fromSCwhereS#='001');

  13、把SC表中葉平老師教的課的成績都更改為此課程的平均成績;

  updateSCsetscore=(selectavg(SC_2.score)

  fromSCSC_2

  whereSC_2.C#=SC.C#)fromCourse,TeacherwhereCourse.C#=SC.C#andCourse.T#=Teacher.T#andTeacher.Tname='葉平');

  14、查詢和1002號的同學(xué)學(xué)習(xí)的課程完全相同的其他同學(xué)學(xué)號和姓名;

  selectS#fromSCwhereC#in(selectC#fromSCwhereS#='1002')

  groupbyS#havingcount(*)=(selectcount(*)fromSCwhereS#='1002');

  15、刪除學(xué)習(xí)葉平老師課的SC表記錄;

  DelectSC

  fromcourse,Teacher

  whereCourse.C#=SC.C#andCourse.T#=Teacher.T#andTname='葉平';

  16、向SC表中插入一些記錄,這些記錄要求符合以下條件:沒有上過編號003課程的同學(xué)學(xué)號、2、

  號課的平均成績;

  InsertSCselectS#,'002',(Selectavg(score)

  fromSCwhereC#='002')fromStudentwhereS#notin(SelectS#fromSCwhereC#='002');

  17、按平均成績從高到低顯示所有學(xué)生的數(shù)據(jù)庫、企業(yè)管理、英語三門的課程成績,按如下形式顯示:學(xué)生ID,,數(shù)據(jù)庫,企業(yè)管理,英語,有效課程數(shù),有效平均分

  SELECTS#as學(xué)生ID

  ,(SELECTscoreFROMSCWHERESC.S#=t.S#ANDC#='004')AS數(shù)據(jù)庫

  ,(SELECTscoreFROMSCWHERESC.S#=t.S#ANDC#='001')AS企業(yè)管理

  ,(SELECTscoreFROMSCWHERESC.S#=t.S#ANDC#='006')AS英語

  ,COUNT(*)AS有效課程數(shù),AVG(t.score)AS平均成績

  FROMSCASt

  GROUPBYS#

  ORDERBYavg(t.score)

  18、查詢各科成績最高和最低的分:以如下形式顯示:課程ID,最高分,最低分

  SELECTL.C#As課程ID,L.scoreAS最高分,R.scoreAS最低分

  FROMSCL,SCASR

  WHEREL.C#=R.C#and

  L.score=(SELECTMAX(IL.score)

  FROMSCASIL,StudentASIM

  WHEREL.C#=IL.C#andIM.S#=IL.S#

  GROUPBYIL.C#)

  AND

  R.Score=(SELECTMIN(IR.score)

  FROMSCASIR

  WHERER.C#=IR.C#

  GROUPBYIR.C#

  );

  19、按各科平均成績從低到高和及格率的百分?jǐn)?shù)從高到低順序

  SELECTt.C#AS課程號,max(course.Cname)AS課程名,isnull(AVG(score),0)AS平均成績

  ,100*SUM(CASEWHENisnull(score,0)>=60THEN1ELSE0END)/COUNT(*)AS及格百分?jǐn)?shù)

  FROMSCT,Course

  wheret.C#=course.C#

  GROUPBYt.C#

  ORDERBY100*SUM(CASEWHENisnull(score,0)>=60THEN1ELSE0END)/COUNT(*)DESC

  20、查詢?nèi)缦抡n程平均成績和及格率的百分?jǐn)?shù)(用1行顯示):企業(yè)管理(001),馬克思(002),OO&UML(003),數(shù)據(jù)庫(004)

  SELECTSUM(CASEWHENC#='001'THENscoreELSE0END)/SUM(CASEC#WHEN'001'THEN1ELSE0END)AS企業(yè)管理平均分

  ,100*SUM(CASEWHENC#='001'ANDscore>=60THEN1ELSE0END)/SUM(CASEWHENC#='001'THEN1ELSE0END)AS企業(yè)管理及格百分?jǐn)?shù)

  ,SUM(CASEWHENC#='002'THENscoreELSE0END)/SUM(CASEC#WHEN'002'THEN1ELSE0END)AS馬克思平均分

  ,100*SUM(CASEWHENC#='002'ANDscore>=60THEN1ELSE0END)/SUM(CASEWHENC#='002'THEN1ELSE0END)AS馬克思及格百分?jǐn)?shù)

  ,SUM(CASEWHENC#='003'THENscoreELSE0END)/SUM(CASEC#WHEN'003'THEN1ELSE0END)ASUML平均分

  ,100*SUM(CASEWHENC#='003'ANDscore>=60THEN1ELSE0END)/SUM(CASEWHENC#='003'THEN1ELSE0END)ASUML及格百分?jǐn)?shù)

  ,SUM(CASEWHENC#='004'THENscoreELSE0END)/SUM(CASEC#WHEN'004'THEN1ELSE0END)AS數(shù)據(jù)庫平均分

  ,100*SUM(CASEWHENC#='004'ANDscore>=60THEN1ELSE0END)/SUM(CASEWHENC#='004'THEN1ELSE0END)AS數(shù)據(jù)庫及格百分?jǐn)?shù)

  FROMSC

sql面試題

上一篇:考試卷子家長簽字內(nèi)容大全

下一篇:聶懷桑為什么復(fù)活魏無羨

其他文章

  • 劉偉的故事
  • 在哪里可以找到個人房源
  • dnf蘿卜游俠改圖教程(dnf蘿卜游俠)
  • 什么是羅爾中值定理 羅爾中值定理的意思
  • 單板直流焊機的原理與維修
  • 油泥怎么洗掉小妙招
  • 陜西省區(qū)號
  • 舞龍舞獅簡筆畫
  • GOODBOY中文什么意思
  • 英語中受傷有哪些單詞可表示都怎么用呀有哪些要注意
  • 金針菜正宗做法
  • 新沙島哪里可以路亞
  • 《外貿(mào)函電》這門課程第二章的知識點有哪些
  • 三角函數(shù)萬能公式是什么
  • 牙買加的世界位置
  • 古羅馬帝國包含今天哪些國家和地區(qū)
  • 格列佛作者
  • 小孩舞蹈考級到底有用嗎
  • 寧夏高考分?jǐn)?shù)線2023
  • 法考準(zhǔn)考證打印時間