您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關oracle中sql試題有哪些,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
待驗證 1.創建一張學生信息表student_info,包含以下信息:學號、姓名、性別、生日、家庭住址、聯系電話;創建一張學生成績表student_score 包含學號、學科、成績。 CREATE TABLE student_info( ID INT, NAME VARCHAR2(10), sex VARCHAR2(4), brithday DATE, address VARCHAR2(50), phone INT); CREATE TABLE student_score( ID INT, subject VARCHAR2(20), score NUMBER(4,1)); 2、根據題目中的兩張表,創建一張新表test,包含以下信息:學號,姓名,學科,成績 CREATE TABLE TEST AS SELECT a.id,a.name,b.subject,b.score FROM student_info a,student_score b; 3、將根據字符查詢轉換后結果,規則為:'A'轉換為'男','B'轉換為'女',其他字符轉換為‘未知’,試用一個SQL語句寫出。 INSERT INTO student_info VALUES (1100,'aaa','A',to_date('1990/3/3 12:12:12','yyyy/mm/dd hh34:mi:ss'),'asdg',333); SELECT DECODE(sex,'A','男','B','女','其他') FROM student_info; 4、提取題目1表中,學生張三的各科成績,需要以下信息:學號、姓名、學科、成績,且按成績的降序排序。 SELECT a.id,a.name,b.subject,b.score FROM student_info a,student_score b WHERE a.id=b.id AND a.name='張三' ORDER BY b.score DESC; 5、題目1表中,按學生總成績由高到低排名,如果成績相同則排名一樣,輸出字段為:排名、學號、姓名、總成績。 SELECT dense_rank() OVER(ORDER BY sum(b.score) DESC) dense_rank,a.id,a.name,sum(b.score) total FROM student_info a,student_score b WHERE a.id=b.id GROUP BY a.name,a.id ①ROW_NUMBER: Row_number函數返回一個唯一的值,當碰到相同數據時,排名按照記錄集中記錄的順序依次遞增。 ②DENSE_RANK: Dense_rank函數返回一個唯一的值,除非當碰到相同數據時,此時所有相同數據的排名都是一樣的。 ③RANK: Rank函數返回一個唯一的值,除非遇到相同的數據時,此時所有相同數據的排名是一樣的,同時會在最后一條相同記錄和下一條不同記錄的排名之間空出排名。 http://www.cnblogs.com/wuyisky/archive/2010/02/24/oracle_rank.html 6.題目1中,假設學科包含'語文','英語','數學','地理',請按以下格式輸出學生的成績 學號 姓名 語文 英語 數學 地理 總成績 xxx xxx 70 70 70 70 280 SELECT A.ID, A.NAME, SUM(DECODE(B.SUBJECT, '語文', SCORE, NULL)) AS 語文, --這里沒有單引號 SUM(DECODE(B.SUBJECT, '數學', SCORE, NULL)) AS 數學, SUM(DECODE(B.SUBJECT, '英語', SCORE, NULL)) AS 英語, SUM(DECODE(B.SUBJECT, '地理', SCORE, NULL)) AS 地理, SUM(B.SCORE) TOTAL FROM STUDENT_INFO A, STUDENT_SCORE B WHERE A.ID = B.ID GROUP BY A.NAME, A.ID; http://blog.163.com/magicc_love/blog/static/185853662201371481247696/ 7、題目1表中,求出各個學科的平均成績,要求降序排序 SELECT b.subject,AVG(b.score) average FROM student_info a,student_score b WHERE a.id=b.id GROUP BY b.subject ORDER BY average DESC 8、下面兩端代碼有什么區別 select CUST.* ,POS.bus_desc from dw_ods.s00_sema_scmcustp CUST left join dw_pdm.t99_pos_code POS on CUST.cust_pos_code=POS.pos_code and CUST.dw_etl_date='2013-07-31'::date; 符合這兩個條件的數據會被匯總到起來 select CUST.* ,POS.bus_desc from dw_ods.s00_sema_scmcustp CUST left join dw_pdm.t99_pos_code POS on CUST.cust_pos_code=POS.pos_code where CUST.dw_etl_date='2013-07-31'::date; 符合上面條件的數據被匯總起來,從其中取出符合下面數據的 9、有一張表TEST,只有一個字段COL,一共有4條記錄,分別是a,b,c,d,對應四個球隊,現在四個球隊進行比賽,用一條sql語句顯示所有可能的比賽組合。 select a.col,b.col from TEST a ,TEST b where a.col<b.col; 10、有表dm_acrm.test01,數據結構為班級(class)、學號(id_number)、數學成績(math)、英語成績(English) 表內數據如下: (備注:右下角打水印處被遮擋的是C02) 請匯總各班級的人數、數學平均成績、英語平均成績,并計算所有學生的人數、數學平均成績、英語平均成績(建議使用rollup)。 SELECT COUNT(id_number),AVG(match),AVG(english) FROM dm_acrm.test01 GROUP BY rollup(CLASS); http://blog.itpub.net/519536/viewspace-610995/ 11、有一張表TEST,有字段客戶ID(cust_id)和交易日期(txn_dte),表結構如下 Create test( Cust_id numberic, Txn_dte date )distributed by(cust_id); 假設表中含有的數據量有千萬級以上(無法通過表自關聯),請生成一張表,里面存放客戶ID、交易日期以及上一次交易日期。 /* distributed by關鍵字查到是GP數據庫相關的,以后遇到再說 */ 某公司的數據開發初級工程師筆試題: 一、SQL語句 已知3張表的關系模式: S (SNO,SNAME) 學生關系。SNO 為學號,SNAME 為姓名 C (CNO,CNAME,CTEACHER) 課程關系。CNO 為課程號,CNAME 為課程名,CTEACHER 為任課教師 SC(SNO,CNO,SCGRADE) 選課關系。SCGRADE 為成績 要求實現如下5個處理: 1. 找出沒有選修過“李明”老師講授課程的所有學生姓名 2. 列出有二門以上(含兩門)不及格課程的學生姓名及其平均成績 3. 列出既學過“1”號課程,又學過“2”號課程的所有學生姓名 4. 列出“1”號課成績比“2”號同學該門課成績高的所有學生的學號 5. 列出“1”號課成績比“2”號課成績高的所有學生的學號及其“1”號課和“2”號課的成績 1. SELECT SNAME FROM S WHERE SNAME != (SELECT A.SNAME FROM S A, C B, SC C WHERE A.SNO = C.SNO AND B.CNO = C.CNO AND B.CTEACHER = '李明'); 2. SELECT A.SNAME, AVG(C.SCGRADE) FROM S A, C B, SC C WHERE A.SNO = C.SNO AND B.CNO = C.CNO AND (SELECT COUNT(C.CNO) FROM S A, C B, SC C WHERE A.SNO = C.SNO AND B.CNO = C.CNO AND C.SCGRADE < 60 GROUP BY A.SNAME) >= 2 GROUP BY A.SNAME 3. SELECT A.SNAME FROM S A, C B, SC C WHERE A.SNO = C.SNO AND B.CNO = C.CNO AND (SELECT B.CNO FROM S A, C B, SC C WHERE A.SNO = C.SNO AND B.CNO = C.CNO) = 1 AND (SELECT B.CNO FROM S A, C B, SC C WHERE A.SNO = C.SNO AND B.CNO = C.CNO) = 2; 4. SELECT A.SNO FROM S A, C B, SC C WHERE A.SNO = C.SNO AND B.CNO = C.CNO AND (SELECT C.SCGRADE FROM SC) > (SELECT C.SCGRADE FROM S A, C B, SC C WHERE A.SNO = C.SNO AND B.CNO = C.CNO AND A.SNO = 2 AND B.CNO = 1) 5. SELECT A.SNO, C.SCGRADE FROM S A, C B, SC C WHERE A.SNO = C.SNO AND B.CNO = C.CNO AND A.SNO = (SELECT A.SNO FROM S A, C B, SC C WHERE A.SNO = C.SNO AND B.CNO = C.CNO AND (SELECT C.SCGRADE FROM SC WHERE CNO = 1) > (SELECT C.SCGRADE FROM SC WHERE CNO = 2)) AND C.CNO IN (1, 2); 常問的面試題匯總: 1、怎么在存儲過程中使用臨時表? 2、口述一下存儲過程的寫法 3、你了解oracle表分區嗎?它有什么優缺點 4、oracle表分區的分區類型有哪幾種?它們的操作方法你知道嗎? 5、談談你對執行計劃的理解,你主要看執行計劃的哪部分? 6、你對sql語句優化有何看法,能說出幾種優化方法嗎? 7、oracle優化器內部處理的表連接方式知道嗎?有哪幾種? 8、會使用開窗函數嗎?說一下你對開窗函數、聚合函數、分析函數的理解 9、游標的屬性有哪幾種?顯式游標和隱式游標的使用方式分別是什么? 10、plsql塊怎么捕捉到異常?你能說出幾個常見的預定義異常嗎? 11、說一下自定義異常如何在plsql塊中實現? 12、你了解視圖嗎?視圖的優缺點是什么? 13、假如讓你開發一張報表,數據量比較小,你會怎樣去實現它?讓報表的數據展現出來? 14、hash join聽說過嗎?(回答 了解過 后,繼續追問 還有幾種連接方式你知道嗎?說一下看看) (這個其實跟7是差不多的,哈希連接這個東西我面試4次被問了3次,印象深刻) 15、你在學校里有沒有接觸過數據庫?了解數據庫的體系結構嗎? 16、你知道SGA和PGA分別是什么嗎? 17、有沒有試著寫過觸發器?觸發器的寫法能大致描述一下嗎? 18、函數和存儲過程有什么區別? 19、對函數了解嗎?說出幾個常用的函數 20、(說出SUM、COUNT、AVG等函數后)知道instr和substr嗎?他們的作用是什么? 22、(面試官拿出個本子)寫一下decode函數的基本結構(decode(valus,if1,then1,if2,then2……)) 23、OLAP和OLTP分別指什么? 24、談談你對索引的理解 25、delete和truncate有什么區別 26、授權和撤銷權限用的指令分別是? 27、rowid和rownum有什么不同? 28、分頁存儲過程里的分頁sql語句部分是怎么寫的?能不能直接先select * from table_name where rownum>=6 然后再rownum<=10。(回答不能之后被追問 為什么?) 29、oracle作業中用到的包是?(追問 運行作業、刪除作業用到的包分別是?) 30、你的oracle的發展前景怎么看? 31、如果有一天甲骨文公司倒閉了,你會做出什么選擇? 32、你知道oracle的最高認證是什么嗎?(回答:OCM,追問:你想到達這種高度嗎?回答:想,追問:但是你知道通過OCM的人中國有多少嗎?這樣的高度是高級DBA的高度,有些人終其一生都達不到,在你被現實逼迫的時候,你會選擇放棄嗎?PS:這個考官當時很犀利,表情很嚴肅,內心很激動,一層一層追問下去,問得我都想哭了,小小應屆生,為了夢想而出來,容易么。。。)
關于“oracle中sql試題有哪些”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。