Oracle最新的Sql筆試題及答案

2021-09-12 09:02:31 字數 4609 閱讀 2908

欄位名稱

資料型別

是否主鍵

注釋dept_id

number

y部門id

parent_department_id

number

n上級部門

department_name

varchar2(50)

n部門名稱

欄位名稱

資料型別

是否主鍵

注釋id

numbery主鍵

dept_id

number

n部門id

user_id

number

n使用者id

欄位名稱

資料型別

是否主鍵

注釋user_id

number

y使用者id

user_name

varchar2(50)

n使用者名稱

logon_name

varchar2(50)

n登入名

is_sales

varchar2(1)

n是否為業務員

欄位名稱

資料型別

是否主鍵

注釋customer_id

number

y客戶id

customer_name

varchar2(50)

n客戶姓名

city

varchar2(50)

n所屬城市

state

varchar2(25)

n所屬州

zip_code

varchar2(10)

ncontact_name

varchar2(50)

n聯絡人

address

varchar2(50)

n聯絡位址

type

varchar2(50)

n客戶型別

comments

varchar2(100)n備註

欄位名稱

資料型別

是否主鍵

注釋pi_id

number

y訂單id

pi_no

varchar2(50)

n訂單號

creation_date

date

n建立日期

customer_id

number

n關聯客戶表的客戶id

operator_id

number

n關聯使用者表的使用者id

currency_code

varchar2(50)

n訂單幣種

exchahge_rate

numbern匯率

欄位名稱

資料型別

是否主鍵

注釋pi_id

number

n訂單id

pi_lines_id

varchar2(50)

y訂單行id

product_code

number

n產品編碼

quantity

number

n產品數量

price

number

n產品單價

1.編寫sql語句,查詢pim_headers表,符合日期在2011-03-01和2011-03-25之間的pi訂單,顯示訂單號,建立日誌,訂單客戶名稱,訂單業務員名稱

select 

t1.pi_no

,t1.creation_date

,t2.custom_name

,t3.user_name

from (select

* from pim_headers

where creation_date between

to_date('2011-03-01','yyyy-mm-dd')

andto_date('2011-03-25','yyyy-mm-dd')

) t1

left join ctm_customers t2

on t1.customer_id = t2.customer_id

left join sm_user t3

on t1.operator_id = t3.user_id

2.編寫sql語句,查詢所有部門名稱及其給部門的業務員的個數,部門在2011-01-01到2011-03-01之間建立的pi訂單數

select t1._department_name,count(t2.user_name),count(t3.pi_no)

from sm_dept t1

left join sm_user_dept t2

on t1.dept_id = t2.dept_id

left join (select

* from pim_headers

where creation_date between

to_date('2011-01-01','yyyy-mm-dd')

andto_date('2011-03-01','yyyy-mm-dd')

) t3

on t2.user_id = t3.operator_id

group by t1.dept_id

3.編寫sql語句,查詢所有客戶及其相關pi訂單號,pi建立日期,pi訂單相關業務員姓名及其業務所屬部門名稱

select

t1.*

,t2.pi_no

,t2.creation_date

,t3.user_name

,t5.department_name

from sm_customers t1

left join pim_headers t2

on t1.custoer_id = t2.customer_id

left join sm_user t3

on t2.operator_id = t3.user_id

left join sm_user_dept t4

on t3.user_id = t4.user_id

left join sm_dept t5

on t4.dept_id = t5.dept_id

4.編寫sql語句,更新沒有下過pi訂單的客戶名稱的備註為「從未發生業務往來」

update ctm_customers t1 set comments = '從未反生業務往來'

where not exists (

select pi_no from pim_headers t2

where t2.customer_id = t1.customer_id

) ;commit;

5.編寫sql語句,查詢所有客戶名稱及其所屬城市,並按照城市名稱降序,使用者名稱公升序排序

select custom_name,city

from ctm_customers

order by city desc,customer_name asc

6.編寫sql語句,查詢出所有的客戶的pi訂單的下單金額,顯示客戶名稱,訂單幣種,訂單總數量及訂單總額

select

t2.customer_name

,t1.currency_code

,t3.total

,t4.total_money

from pim_headers t1

left join ctm_customers t2

on t1.customer_id = t2.customer_id

left join (

select pi_id,sum(quantity) total,sum(quantity*price) total_money

from pim_lines

group by pi_id

) t3

on t1.pi_id = t3.pi_id;

7.編寫函式,函式需傳入部門id,返回結果部門對應所有業務員姓名連線起來,中間用逗號隔開

create or replace function getuserbydeptid

( dept_id number) return varchar2

is res varchar2(200);

cursor mycursor(did number) is

select t2.customer_name

from (select *

from sm_user_dept

where dept_id = did

) t1

left join sm_user t2

on t1.user_id = t2.user_id ;

begin

for c_row in mycursor(dept_id) loop

res := res ||','|| c_row

end loop;

return res;

end;

最新綠盟筆試試題

雖然考試試題絕大部分是一些基礎試題,但是明顯可以看得出來,如果沒有深厚的功底,是答不好的。我報的是研發。by rainfish 言歸正傳 第一題 描述tcp的三次握手,寫出syn ack的關係。第二題 描述tcp udp的區別及優劣。描述p2p機制,及其發展前景。第四題 樹的深度優先遍歷。第五題 有...

用友 SQL筆試題

兩道sql筆試題 一 表test 中,找出資料夾下有檔案的資料夾 mnt t期望結果 music pic sql語句 select a.path from select from test where isfolder t a join select from test where isfolder...

刷刷筆試題 sql

1.資料庫中有學院表和成績表 學院表t school結構如下 學院id school id,學院名稱 school name 成績表t score結構如下 學號 id.姓名 name,分數 score,學院id school id 請用sql語句查詢出學院名稱為 計算機系 的分數最高的前20位的學生...