




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
用一條SQL語句查詢出每門課都大于80分的學生姓名namekechengfenshu張三語文81張三數學75李四語文76李四數學90王五語文81王五數學100王五英語90A:selectdistinctnamefromtablewherenamenotin(selectdistinctnamefromtablewherefenshu<=80)學生表如下:自動編號學號姓名課程編號課程名稱分數12022001張三0001數學6922022002李四0001數學8932022001張三0001數學69刪除除了自動編號不同,其他都一樣的學生冗余信息A:deletetablenamewhere自動編號notin(selectmin(自動編號)fromtablenamegroupby學號,姓名,課程編號,課程名稱,分數)一個叫department的表,里面只有一個字段name,一共有4條紀錄,分別是a,b,c,d,對應四個球對,現在四個球對進展競賽,用一條sql語句顯示全部可能的競賽組合.你先按你自己的想法做一下,看結果有我的這個簡潔嗎?答:select,fromteama,team<請用SQL語句實現:從TestDB數據表中查詢出全部月份的發生額都比101科目相應月份的發生額高的科目。請留意:TestDB中有很多科目,都有1-12月份的發生額。AccID:科目代碼,Occmonth:發生額月份,DebitOccur:發生額。數據庫名:JcyAudit,數據集:Select*fromTestDB答:selecta.*fromTestDBa,(selectOccmonth,max(DebitOccur)Debit101ccurfromTestDBwhereAccID=”101”groupbyOccmonth)bwherea.Occmonth=b.Occmonthanda.DebitOccur>b.Debit101ccur************************************************************************************面試題:怎么把這樣一個表兒yearmonthamount199111.1199121.2199131.3199141.4199212.1199222.2199232.3199242.4查成這樣一個結果yearm1m2m3m419911.11.21.31.419922.12.22.32.4答案一、selectyear,(selectamountfromaaamwheremonth=1andm.year=aaa.year)asm1,(selectamountfromaaamwheremonth=2andm.year=aaa.year)asm2,(selectamountfromaaamwheremonth=3andm.year=aaa.year)asm3,(selectamountfromaaamwheremonth=4andm.year=aaa.year)asm4fromaaagroupbyyear這個是ORACLE中做的:select*from(selectname,yearb1,lead(year)over(partitionbynameorderbyyear)b2,lead(m,2)over(partitionbynameorderbyyear)b3,rank()over(partitionbynameorderbyyear)rkfromt)whererk=1;************************************************************************************精妙的SQL語句!精妙SQL語句不詳發文時間:2022.05.2910:55:05說明:復制表(只復制構造,源表名:a新表名:b)SQL:select*intobfromawhere1<>1說明:拷貝表(拷貝數據,源表名:a目標表名:b)SQL:insertintob(a,b,c)selectd,e,ffromb;說明:顯示文章、提交人和最終回復時間SQL:selecta.title,a.username,b.adddatefromtablea,(selectmax(adddate)adddatefromtablewheretable.title=a.title)b說明:外連接查詢(1:a2:b)SQL:selecta.a,a.b,a.c,b.c,b.d,b.ffromaLEFTOUTJOINbONa.a=b.c說明:日程安排提前五分鐘提示SQL:select*from日程安排wheredatediff(”minute”,f開頭時間,getdate())>5說明:兩張關聯表,刪除主表中已經在副表中沒有的信息SQL:deletefrominfowherenotexists(select*frominfobzwhereinfo.infid=infobz.infid)說明:--SQL:B.PREV_UPD_DATEFROMTABLE1,(SELECTX.NUM,X.UPD_DATE,Y.UPD_DATEPREV_UPD_DATEFROM(SELECTNUM,UPD_DATE,INBOUND_QTY,STOCK_ONHANDFROMTABLE2WHERETO_CHAR(UPD_DATE,”YYYY/MM”)=TO_CHAR(SYSDATE,”YYYY/MM”))X,(SELECTNUM,UPD_DATE,STOCK_ONHANDFROMTABLE2WHERETO_CHAR(UPD_DATE,”YYYY/MM”)=TO_CHAR(TO_DATE(TO_CHAR(SYSDATE,”YYYY/MM”)|”/01”,”YYYY/MM/DD”)-1,”YYYY/MM”))Y,WHEREX.NUM=Y.NUM〔+〕ANDX.INBOUND_QTY+NVL(Y.STOCK_ONHAND,0)<>X.STOCK_ONHAND)BWHEREA.NUM=B.NUM說明:--SQL:select*fromstudentinfowherenotexists(select*fromstudentwherestudentinfo.id=student.id)and系名稱=”“&strdepartmentname&“”and專業名稱orderby性別,生源地,高考總成績說明:從數據庫中去一年的各單位費統計(費定額賀電化肥清單兩個表來源〕SQL:SELECTa.userper,a.tel,a.standfee,TO_CHAR(a.telfeedate,”yyyy”)AStelyear,SUM(decode(TO_CHAR(a.telfeedate,”mm”),”01”,a.factration))ASJAN,SUM(decode(TO_CHAR(a.telfeedate,”mm”),”02”,a.factration))ASFRI,SUM(decode(TO_CHAR(a.telfeedate,”mm”),”03”,a.factration))ASMAR,SUM(decode(TO_CHAR(a.telfeedate,”mm”),”04”,a.factration))ASAPR,SUM(decode(TO_CHAR(a.telfeedate,”mm”),”05”,a.factration))ASMAY,SUM(decode(TO_CHAR(a.telfeedate,”mm”),”06”,a.factration))ASJUE,SUM(decode(TO_CHAR(a.telfeedate,”mm”),”07”,a.factration))ASJUL,SUM(decode(TO_CHAR(a.telfeedate,”mm”),”08”,a.factration))ASAGU,SUM(decode(TO_CHAR(a.telfeedate,”mm”),”09”,a.factration))ASSEP,SUM(decode(TO_CHAR(a.telfeedate,”mm”),”10”,a.factration))ASOCT,SUM(decode(TO_CHAR(a.telfeedate,”mm”),”11”,a.factration))ASNOV,SUM(decode(TO_CHAR(a.telfeedate,”mm”),”12”,a.factration))ASDECFROM(SELECTa.userper,a.tel,a.standfee,b.telfeedate,b.factrationFROMTELFEESTANDa,TELFEEbWHEREa.tel=b.telfax)aGROUPBYa.userper,a.tel,a.standfee,TO_CHAR(a.telfeedate,”yyyy”)說明:四表聯查問題:SQL:select*fromaleftinnerjoinbona.a=b.brightinnerjoincona.a=c.cinnerjoindona.a=d.dwhere.....說明:得到表中最小的未使用的ID號SQL:SELECT(CASEWHENEXISTS(SELECT*FROMHandlebWHEREb.HandleID=1)THENMIN(HandleID)+1ELSE1END)asHandleIDFROMHandleWHERENOTHandleIDIN(SELECTa.HandleID-1FROMHandlea)*******************************************************************************有兩個表A和BkeyvalueB的key在ABvalue換為A中對應的value這道題的SQL語句怎么寫?update b set b.value=(select a.value from a where a.key=b.key) whereb.id in(select b.id from b,a where b.key=a.key);***************************************************************************sql面試題原表:courseidcoursenamescorejava70oracle90xml40jsp30servlet80為了便于閱讀,查詢此表后的結果顯式如下(及格分數為60):courseidcoursenamescoremarkjava70passoracle90passxml40failjsp30failservlet80pass寫出此查詢語句沒有裝ORACLE,沒試過selectcourseid,coursename,score,decode〔sign(score-60),-1,”fail”,”pass”)asmarkfromcourse完全正確NameNull?TypeCOURSEIDNUMBERCOURSENAMEVARCHAR2(10)SCORENUMBERSQL>select*fromcourse_v;COURSEIDCOURSENAMESCOREjava70oracle90xml40jsp30servlet80SQL>selectcourseid,coursename,score,decode(sign(score-60),-1,”fail”,”pass”)asmarkfromcourse_v;COURSEIDCOURSENAMESCOREMARKjava70passoracle90passxml40failjsp30failservlet80pass*******************************************************************************原表:idproidproname11M2F1N2G1B32A查詢后的表:pro21MFNGBA寫出查詢語句解決方案sql求解aa1a21abx2y2zselect能選成以下結果嗎?1ab2xyz使用pl/sql代碼實現,但要求你組合后的長度不能超出oraclevarchar2長度的限制。下面是一個例子createorreplacetypestrings_tableistableofvarchar2(20);/createorreplacefunctionmerge(pvinstrings_table)returnvarchar2islsvarchar2(4000);beginforiin1..pv.countloopls:=ls||pv(i);loop;returnls;end;/createtablet(idnumber,namevarchar2(10));insertintotvalues(1,”Joan”);insertintotvalues(1,”Jack”);insertintotvalues(1,”Tom”);insertintotvalues(2,”Rose”);insertintotvalues(2,”Jenny”);columnnamesformata80;selectt0.id,merge(cast(multiset(selectnamefromtwheret.id=t0.id)asstrings_table))namesfrom(selectdistinctidfromt)t0;droptypestrings_table;dropfunctionmerge;droptablet;sql:Wellifyouhaveathoreticalmaximum,whichIwouldassumeyouwouldgiventhelegibilityoflistinghundredsofemployeesinthewayyoudescribethenyes.ButtheSQLneedstousetheLAGfunctionforeachemployee,henceahundredempsahundredLAGs,sokindofbulky.Thisexampleusesamaxof6,andwouldneedmorecutnpastingtodomorethanthat.SQL>selectdeptno,dname,empsfrom(selectd.deptno,d.dname,rtrim(e.ename||”,”||4lead(e.ename,1)over(partitionbyd.deptnoorderbye.ename)||”,”||lead(e.ename,2)over(partitionbyd.deptno7orderbye.ename)||”,”||8lead(e.ename,3)over(partitionbyd.deptno9orderbye.ename)||”,”||10lead(e.ename,4)over(partitionbyd.deptno11orderbye.ename)||”,”||12lead(e.ename,5)over(partitionbyd.deptno13orderbye.ename),”,”)emps,14row_number()over(partitionbyd.deptno15orderbye.ename)xfromempe,deptdwhered.deptno=e.deptno18)19wherex=120/DEPTNODNAMEEMPS10ACCOUNTINGCLARK,KING,MILLER20RESEARCHADAMS,FORD,JONES,ROONEY,SCOTT,SMITH30SALESALLEN,BLAKE,JAMES,MARTIN,TURNER,WARDalsocreatefunctionget_a2;createorreplacefunctionget_a2(tmp_a1number)returnvarchar2isCol_a2varchar2(4000);beginCol_a2:=””;forcurin(selecta2fromunite_awherea1=tmp_a1)loopCol_a2=Col_a2||cur.a2;endloop;returnCol_a2;endget_a2;selectdistincta1,get_a2(a1)fromunite_a1ABCEFGKMN*******************************************************************************一個SQL面試題去年應聘一個職位未果,其間被考了一個看似簡潔的題,但我沒有找到好的大案.不知各位大蝦有無好的解法?題為:有兩個表t1,t2,Tablet1:SELLER|NON_SELLERABACADBABCBDCACBCDDADBDCTablet2:SELLER|COUPON|BALA9100B9200C9300D9400A9.5100B9.520A1080要求用SELECT語句列出如下結果 如A的SUM(BAL)為B,C,D的和,B的SUM(BAL)A,C,D的和.......且用的方法不要增加數據庫負擔,如用臨時表等.NON-SELLER|COUPON|SUM(BAL)---------------A9900B9800C9700D9600A9.520B9.5100C9.5120D9.5120A100B1080C1080D1080關于論壇上那個SQL微軟面試題問題:一百個賬戶各有100$請輸出每天全部賬戶的余額信息〔不包括第一天〕100天*100個用戶的紀錄集下面是我的思路:創立表并插入測試數據:我們要求username從1-100CREATETABLE[dbo].[TABLE2]([username][varchar](50)NOTNULL,--用戶名[outdate][datetime]NOTNULL,--日期[cash][float]NOTNULL--余額)ON[PRIMARYdeclare@iintset@i=1while@i<=100begininserttable2values(convert(varchar(50),@i),”2022-10-1”,100)inserttable2values(convert(varchar(50),@i),”2022-11-1”,50)set@i=@i+1endinserttable2values(convert(varchar(50),@i),”2022-10-1”,90)select*fromtable2orderbyoutdate,convert(int,username)組合查詢語句:我們必需返回一個從第一天開頭到100天的紀錄集:如:2022-10-1〔這個日期是任意的〕2022-1-8由于第一天是任意一天,所以我們需要下面的SQL語句:selecttop100dateadd(d,convert(int,username)-1,min(outdate))asoutdatefromtable2groupbyusernameorderbyconvert(int,username)這里的微妙在于:convert(int,username)-1〔1-100:-))groupbyusername,min(outdate):第一天就可能每個用戶有多個紀錄。返回的結果:outdate2022-10-0100:00:00.000.........2022-01-0800:00:00.000返回一個全部用戶名的紀錄集:selectdistinctusernamefromtable2返回結果:username110100......99100100個用戶記錄集的笛卡爾集合:select*from(selecttop100dateadd(d,convert(int,username)-1,min(outdate))asoutdatefromtable2groupbyusernameorderbyconvert(int,username))asACROSSjoin(selectdistinctusernamefromtable2)asBorderbyoutdate,convert(int,username)返回結果100*100條紀錄:outdate username2022-10-0100:00:00.000 1......2022-01-0800:00:00.000 100返回當前全部用戶在數據庫的有的紀錄:selectoutdate,username,min(cash)ascashfromtable2groupbyoutdate,usernameorderbyoutdate,convert(int,username)返回紀錄:outdateusernamecash2022-10-0100:00:00.000190......2022-01-0800:00:00.00010050c中返回的笛卡爾集和d中返回的紀錄做leftjoin:selectC.outdate,C.username,D.cashfrom(select*from(selecttop100dateadd(d,convert(int,username)-1,min(outdate))asoutdatefromtable2groupbyusernameorderbyconvert(int,username))asACROSSjoin(selectdistinctusernamefromtable2)asB)asCjoin(selectoutdate,username,min(cash)ascashfromtable2groupbyoutdate,username)asDon(C.username=D.usernameanddatediff(d,C.outdate,D.outdate)=0)orderbyC.outdate,convert(int,C.username)留意:用戶在當天假設沒有紀錄,cash字段返回NULL,否那么cash返回每個用戶當天的余額outdateusernamecash2022-10-0100:00:00.0001902022-10-0100:00:00.0002100......2022-10-0200:00:00.0001902022-10-0200:00:00.000......2NULL<--留意這里2022-01-0800:00:00.00010050cash為NULL,我們要返回小于當前紀錄日期的第一個用戶余額(由于我們使用orderbycash,所以返回top1min應當也可以)這個余額即為當前的余額:caseisnull(D.cash,0)when0then(selecttop1cashfromtable2wheretable2.username=C.usernameanddatediff(d,C.outdate,table2.outdate)<0orderbytable2.cash)elseD.cash最終組合的完整語句就是selectC.outdate,C.username,caseisnull(D.cash,0)when0then(selecttop1cashfromtable2wheretable2.username=C.usernameanddatediff(d,C.outdate,table2.outdate)<0orderbytable2.cash)elseD.cashendascashfrom(select*from(selecttop100dateadd(d,convert(int,username)-1,min(outdate))asoutdatefromtable2groupbyusernameorderbyconvert(int,username))asACROSSjoin(selectdistinctusernamefromtable2)asB)asCjoin(selectoutdate,username,min(cash)ascashfromtable2groupbyoutdate,username)asDon(C.username=D.usernameanddatediff(d,C.outdate,D.outdate)=0)orderbyC.outdate,convert(int,C.username)返回結果:outdateusernamecash2022-10-0100:00:00.0001902022-10-0100:00:00.0002100......2022-01-0800:00:00.00010050***********************************************************************************sql3140的記錄〔以自動增長ID為主鍵〕*從數據表中取出第n條到第m條的記錄*/declare@mintdeclare@nintdeclare@sqlvarchar(800)set@m=40set@n=31set@sql=”selecttop”+str(@m-@n+1)+”*fromidetailwhereautoidnotin(selecttop”+str(@n-1)+”autoidfromidetail)”exec(@sql)selecttop10*fromtwhereidnotin(selecttop30idfromtorderbyid)ordebyidselecttop10*fromtwhereidin(selecttop40idfromtorderbyid)orderbyiddesc*******************************************************************************一道面試題,sql語句有表a存儲二叉樹的節點,要用一條sql語句查出全部節點及節點所在的層.ac1c2A 1 /\ABBC 2AC//\BDDNE 3CE/\\DFFKI 4EIDKCN所要得到的結果如下jdcsA1B2C2D3N3E3F4K4I4有高手指導一下,我只能用pl/sql寫出來,請教用一條sql語句的寫法SQL>selectc2,level+1lv2fromteststartwithc1=”A”connectbyc1=priorc25union6select”A”,1fromdual7orderbylv;C2LVA1B2C2D3E3N3F4I4K49行。以上轉自HYPERLINK“:///wenboliang/archive/2022/04/20/4095859.aspx““:///wenboliang/archive/2022/04/20/4095859.aspxSQLgroupby表內容:2022-05-09勝2022-05-09勝2022-05-09負2022-05-09負2022-05-10勝2022-05-10負2022-05-10負假設要生成以下結果,sql語句?勝負2022-05-09222022-05-1012createtable#tmp(rqvarchar(10),shengfunchar(1))insertinto#tmpvalues(”2022-05-09”,”勝”)insertinto#tmpvalues(”2022-05-09”,”勝”)insertinto#tmpvalues(”2022-05-09”,”負”)insertinto#tmpvalues(”2022-05-09”,”負”)insertinto#tmpvalues(”2022-05-10”,”勝”)insertinto#tmpvalues(”2022-05-10”,”負”)insertinto#tmpvalues(”2022-05-10”,”負”)selectrqsum(casewhenshengfu=”勝then1else0end)”勝”,sum(casewhenshengfu=”負”then1else0end)”負”from#tmpgroupbyrqselectN.rq,N.勝,M.負from(selectrq,勝=count(*from#tmpwhereshengfu=”勝”groupbyrq)Ninnerjoin(selectrq,負=count(*)from#tmpwhereshengfu=”負”groupbyrq)MonN.rq=M.rqselecta.col001,a.a1勝,b.b1負from(selectcol001,count(col001a1fromtemp1wherecol002=”勝groupbycol001)a,(selectcol001,count(col001b1fromtemp1wherecol002=”負groupbycol001)bwherea.col001=b.col001SQL語句的查詢問題表中有ABC三列,SQL語句實現:當A列大于B列時選擇A列否那么選擇B列,當B列大于C列時選擇B列否那么選擇C列。select(casewhena>bthenaelsebend),(casewhenb>cthenbeslecend)fromtable_namesql語句?tb_send表中日期(SendTime字段)為當天的全部記錄?(SendTime字段為datetime型,包含日期與時間)select*fromtbwheredatediff(dd,SendTime,getdate())=03個字段:語文,數學,英語。其中有370分,8058分,請用一條sql語句查詢出這三條記錄并按以下條件顯示出來〔并寫出您的思路〕:806060分表示不及格。顯示格式:語文數學英語及格優秀不及格select(casewhen語文>=80then”優秀”when語文>=60then”及格”else”不及格”)as語文,(casewhen數學>=80then”優秀”when數學>=60then”及格”else”不及格”)as數學,(casewhen英語>=80then”優秀”when英語>=60then”及格”else”不及格”)as英語,fromtablesqlserver2000sqlIDIDValues,int型,并解釋下兩者的區分?用戶臨時表:createtable#xx(IDint,IDValuesint)系統臨時表:createtable##xx(IDint,IDValuesint)區分:用戶臨時表只對創立這個表的用戶的Session可見
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 證券從業資格證考試的疑難解析與答疑試題及答案
- 樣本處理中的常見問題試題及答案
- 2025年證券從業資格證考試中重要詞匯分析試題及答案
- 理財師的投資理念與實踐試題及答案
- 注會考試復習策略探討試題及答案
- 2024-2025學年高中歷史專題三近代中國的民主革命三新民主主義革命學案含解析人民版必修1
- 注冊會計師考試復習注意事項試題及答案
- 注冊會計師智力測試的相關試題與答案
- 行政管理師必考內容及答案
- 微生物導致的疾病傳播途徑試題及答案
- 某地產項目紅線廣告圍擋工程投標文件
- 建筑勞務公司簡介范文6篇
- 山東司法警官職業學院教師招聘考試真題2022
- 災害風險分析與風險管理
- 機動車維修竣工出廠合格證樣式
- 中考數學復習備考-幾何專題突破與拓展訓練題
- 衛生院B超、心電圖室危急值報告制度及流程
- 腫瘤化療-課件
- 第三節鋼筋混凝土排架結構單層工業廠房結構吊裝課件
- 普通高中學生綜合素質評價檔案
- 產品路標規劃-綜述2.1
評論
0/150
提交評論