溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

oracle中sql試題有哪些

發(fā)布時間:2021-11-11 10:17:56 來源:億速云 閱讀:144 作者:小新 欄目:關(guān)系型數(shù)據(jù)庫

這篇文章將為大家詳細(xì)講解有關(guān)oracle中sql試題有哪些,小編覺得挺實(shí)用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

待驗(yàn)證

1.創(chuàng)建一張學(xué)生信息表student_info,包含以下信息:學(xué)號、姓名、性別、生日、家庭住址、聯(lián)系電話;創(chuàng)建一張學(xué)生成績表student_score 包含學(xué)號、學(xué)科、成績。
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、根據(jù)題目中的兩張表,創(chuàng)建一張新表test,包含以下信息:學(xué)號,姓名,學(xué)科,成績
CREATE TABLE TEST AS SELECT a.id,a.name,b.subject,b.score FROM student_info a,student_score b;

3、將根據(jù)字符查詢轉(zhuǎn)換后結(jié)果,規(guī)則為:'A'轉(zhuǎn)換為'男','B'轉(zhuǎn)換為'女',其他字符轉(zhuǎn)換為‘未知’,試用一個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表中,學(xué)生張三的各科成績,需要以下信息:學(xué)號、姓名、學(xué)科、成績,且按成績的降序排序。
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表中,按學(xué)生總成績由高到低排名,如果成績相同則排名一樣,輸出字段為:排名、學(xué)號、姓名、總成績。
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函數(shù)返回一個唯一的值,當(dāng)碰到相同數(shù)據(jù)時,排名按照記錄集中記錄的順序依次遞增。 

②DENSE_RANK:
Dense_rank函數(shù)返回一個唯一的值,除非當(dāng)碰到相同數(shù)據(jù)時,此時所有相同數(shù)據(jù)的排名都是一樣的。 

③RANK:
Rank函數(shù)返回一個唯一的值,除非遇到相同的數(shù)據(jù)時,此時所有相同數(shù)據(jù)的排名是一樣的,同時會在最后一條相同記錄和下一條不同記錄的排名之間空出排名。
http://www.cnblogs.com/wuyisky/archive/2010/02/24/oracle_rank.html

6.題目1中,假設(shè)學(xué)科包含'語文','英語','數(shù)學(xué)','地理',請按以下格式輸出學(xué)生的成績
學(xué)號 姓名 語文 英語 數(shù)學(xué) 地理 總成績
xxx xxx 70 70 70 70 280

SELECT A.ID,
       A.NAME,
       SUM(DECODE(B.SUBJECT, '語文', SCORE, NULL)) AS 語文, --這里沒有單引號
       SUM(DECODE(B.SUBJECT, '數(shù)學(xué)', SCORE, NULL)) AS 數(shù)學(xué),
       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表中,求出各個學(xué)科的平均成績,要求降序排序
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、下面兩端代碼有什么區(qū)別
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;

符合這兩個條件的數(shù)據(jù)會被匯總到起來

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;

符合上面條件的數(shù)據(jù)被匯總起來,從其中取出符合下面數(shù)據(jù)的

9、有一張表TEST,只有一個字段COL,一共有4條記錄,分別是a,b,c,d,對應(yīng)四個球隊,現(xiàn)在四個球隊進(jìn)行比賽,用一條sql語句顯示所有可能的比賽組合。
select a.col,b.col from TEST a ,TEST b where a.col<b.col;

10、有表dm_acrm.test01,數(shù)據(jù)結(jié)構(gòu)為班級(class)、學(xué)號(id_number)、數(shù)學(xué)成績(math)、英語成績(English)
表內(nèi)數(shù)據(jù)如下:
 
(備注:右下角打水印處被遮擋的是C02)
請匯總各班級的人數(shù)、數(shù)學(xué)平均成績、英語平均成績,并計算所有學(xué)生的人數(shù)、數(shù)學(xué)平均成績、英語平均成績(建議使用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),表結(jié)構(gòu)如下
Create test(
Cust_id numberic,
Txn_dte date
)distributed by(cust_id);
假設(shè)表中含有的數(shù)據(jù)量有千萬級以上(無法通過表自關(guān)聯(lián)),請生成一張表,里面存放客戶ID、交易日期以及上一次交易日期。

/*
distributed by關(guān)鍵字查到是GP數(shù)據(jù)庫相關(guān)的,以后遇到再說
*/


某公司的數(shù)據(jù)開發(fā)初級工程師筆試題:
一、SQL語句
已知3張表的關(guān)系模式:
S (SNO,SNAME) 學(xué)生關(guān)系。SNO 為學(xué)號,SNAME 為姓名
C (CNO,CNAME,CTEACHER) 課程關(guān)系。CNO 為課程號,CNAME 為課程名,CTEACHER 為任課教師
SC(SNO,CNO,SCGRADE) 選課關(guān)系。SCGRADE 為成績
要求實(shí)現(xiàn)如下5個處理:
1. 找出沒有選修過“李明”老師講授課程的所有學(xué)生姓名
2. 列出有二門以上(含兩門)不及格課程的學(xué)生姓名及其平均成績
3. 列出既學(xué)過“1”號課程,又學(xué)過“2”號課程的所有學(xué)生姓名
4. 列出“1”號課成績比“2”號同學(xué)該門課成績高的所有學(xué)生的學(xué)號
5. 列出“1”號課成績比“2”號課成績高的所有學(xué)生的學(xué)號及其“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表分區(qū)嗎?它有什么優(yōu)缺點(diǎn)
4、oracle表分區(qū)的分區(qū)類型有哪幾種?它們的操作方法你知道嗎?
5、談?wù)勀銓?zhí)行計劃的理解,你主要看執(zhí)行計劃的哪部分?
6、你對sql語句優(yōu)化有何看法,能說出幾種優(yōu)化方法嗎?
7、oracle優(yōu)化器內(nèi)部處理的表連接方式知道嗎?有哪幾種?
8、會使用開窗函數(shù)嗎?說一下你對開窗函數(shù)、聚合函數(shù)、分析函數(shù)的理解
9、游標(biāo)的屬性有哪幾種?顯式游標(biāo)和隱式游標(biāo)的使用方式分別是什么?
10、plsql塊怎么捕捉到異常?你能說出幾個常見的預(yù)定義異常嗎?
11、說一下自定義異常如何在plsql塊中實(shí)現(xiàn)?
12、你了解視圖嗎?視圖的優(yōu)缺點(diǎn)是什么?
13、假如讓你開發(fā)一張報表,數(shù)據(jù)量比較小,你會怎樣去實(shí)現(xiàn)它?讓報表的數(shù)據(jù)展現(xiàn)出來?
14、hash join聽說過嗎?(回答 了解過 后,繼續(xù)追問 還有幾種連接方式你知道嗎?說一下看看) (這個其實(shí)跟7是差不多的,哈希連接這個東西我面試4次被問了3次,印象深刻)
15、你在學(xué)校里有沒有接觸過數(shù)據(jù)庫?了解數(shù)據(jù)庫的體系結(jié)構(gòu)嗎?
16、你知道SGA和PGA分別是什么嗎?
17、有沒有試著寫過觸發(fā)器?觸發(fā)器的寫法能大致描述一下嗎?
18、函數(shù)和存儲過程有什么區(qū)別?
19、對函數(shù)了解嗎?說出幾個常用的函數(shù)
20、(說出SUM、COUNT、AVG等函數(shù)后)知道instr和substr嗎?他們的作用是什么?
22、(面試官拿出個本子)寫一下decode函數(shù)的基本結(jié)構(gòu)(decode(valus,if1,then1,if2,then2……))
23、OLAP和OLTP分別指什么?
24、談?wù)勀銓λ饕睦斫?
25、delete和truncate有什么區(qū)別
26、授權(quán)和撤銷權(quán)限用的指令分別是?
27、rowid和rownum有什么不同?
28、分頁存儲過程里的分頁sql語句部分是怎么寫的?能不能直接先select * from table_name where rownum>=6 然后再rownum<=10。(回答不能之后被追問 為什么?)
29、oracle作業(yè)中用到的包是?(追問 運(yùn)行作業(yè)、刪除作業(yè)用到的包分別是?)
30、你的oracle的發(fā)展前景怎么看?
31、如果有一天甲骨文公司倒閉了,你會做出什么選擇?
32、你知道oracle的最高認(rèn)證是什么嗎?(回答:OCM,追問:你想到達(dá)這種高度嗎?回答:想,追問:但是你知道通過OCM的人中國有多少嗎?這樣的高度是高級DBA的高度,有些人終其一生都達(dá)不到,在你被現(xiàn)實(shí)逼迫的時候,你會選擇放棄嗎?PS:這個考官當(dāng)時很犀利,表情很嚴(yán)肅,內(nèi)心很激動,一層一層追問下去,問得我都想哭了,小小應(yīng)屆生,為了夢想而出來,容易么。。。)

關(guān)于“oracle中sql試題有哪些”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI