當前位置:首頁 » 編程語言 » sql面試

sql面試

發布時間: 2022-02-04 03:37:29

sql面試題

翻譯
題目很簡單,樓主看看
MovieBuster在線電影收看服務擁有如下信息的資料庫
(*)號表示外鍵參考,
電影信息表:MovieInfo(mvID, title, rating, year, length, studio)
分類信息表:GenreInfo(mvID*, genre)
工作室信息表:DirectInfo(mvID*, director)
電影信息表主要存放電影的相關信息,其中主鍵mvID是電影出產時人為給定的一個ID值,一個電影可能擁有多個類別並且有多個工作室一起生產。
注意這些表與資料庫中的其他表名已經區別開來。
一個只讀數據信息已經被建立在oracle上並且可以通過如下命令sqlmb1獲得信息。作為選擇,你可以通過此建立自己的數據表。

數據可以從黑板上看到
從資料庫中查詢如下問題並給出正確答案:
(1)工作室 "Paramount Pictures"已經生產多少部 rating="G" 並且年份在1940-1950年之間的電影?
(2)查出rating ="PG" 生產年份在1940之前或者2000年之後的電影的總數。
(3)列出每種分類的電影數,查出結果按電影分數總數降序排序。
(4)查找出生產的電影平均長度至少大於等於3的工作室的名字以及對應的平均電影長度。

⑵ 這個一個SQL面試題該怎麼寫

一、表設計(表只列主鍵和最少符合需求欄位,欄位類型省略):
員工表:id, 員工姓名
樓盤表:id, 樓盤名稱, 員工id
出單表:id, 出單年月,員工id, 樓盤id, 出單價格
工資表:id, 工資年月, 員工id, 工資
樓盤分攤表:id, 分攤年月, 樓盤id, 員工id, 分攤成本

二、分攤成本記錄(只查詢樓盤分攤表的記錄,如何插入根據資料庫類型 select into或者insert into)
select 工資表.工資年月 as 分攤年月, 出單表.樓盤id, 出單表.員工id, 工資表.工資 / 員工出單數.出單合計 as 分攤成本
from 出單表 join 工資表 on (出單表.員工id = 工資表.員工id and 出單表.出單年月 = 工資表.工資年月)
join (select 員工id, 出單年月, count(1) as 出單合計 from 出單表 group by 員工id, 出單年月) 員工出單數 on (出單表.員工id = 員工出單數.員工id and 出單表.出單年月 = 員工出單數.出單年月)
where 工資表.工資年月 = '這個條件填最新的年月,如果不加這個條件,就是所有月份的'
union all

select 工資表.工資年月 as 分攤年月, 出單表.樓盤id, 出單表.員工id, 工資表.工資 / 員工出單數.出單合計 as 分攤成本
from 樓盤表 join 工資表 on 樓盤表.員工id = 工資表.員工id
join (select 員工id, count(1) as 樓盤合計 from 樓盤表 group by 員工id) 員工負責樓盤數 on 樓盤表.員工id = 員工負責樓盤數.員工id
left join (select 員工id, 出單年月, count(1) as 出單合計 from 出單表 group by 員工id, 出單年月) 員工出單數 on (工資表.員工id = 員工出單數.員工id and 工資表.工資年月 = 員工出單數.出單年月)
where 員工出單數.員工id is null and 工資表.工資年月 = '這個條件填最新的年月,如果不加這個條件,就是所有月份的'

⑶ 一道sql面試題,能給出詳細的實現語句最好

SELECT DISTINCT
每個任務所有者當日的總結果數/當日總結果數,
每個任務所有者當日的總任務數/當日總任務數,
task_owner
FROM (
SELECT SUM(result_num) over(PARTITION BY 時間欄位截取到日期,result_server) 當日總結果數,
SUM(result_num) over(PARTITION BY 時間欄位截取到日期,result_server,task_owner) 每個任務所有者當日的總結果數,
COUNT(1) over(PARTITION BY 時間欄位截取到日期,result_server) 當日總任務數,
COUNT(1) over(PARTITION BY 時間欄位截取到日期,result_server,task_owner) 每個任務所有者當日的總任務數,
時間欄位截取到日期,
task_owner,
result_num
FROM table_a);
不知道行不行,我這也測不了;
我用的是PLSQL,想來差不多,不過PLSQL我就直接寫個過程算了,沒必要集中到一段SQL里,費腦子

⑷ SQL面試題

select name
from
(
select name,sum(score) sc
from 表

group by name
) t1
where t1.sc>200
這樣?

⑸ sql面試題

1.
select
s.title,
count(p.id)
from
書表
s
left
join
評論
p
on
s.id=p.書表中的id
group
by
s.title
(注意:左外連接的作用是將評價數為0的書顯示出來.count(p.id)和count(*)的區別是count(p.id)不計入p.id為null的行)
2.
select
top
1
s.title,
count(p.id)
from
書表
s
left
join
評論
p
on
s.id=p.書表中的id
group
by
s.title
order
by
2
desc
(以第2列倒序排序,取第1行)

⑹ sql面試題

1.insert into table_b
select * from table_a

2.delete from table_a as a
where exists
(
select * from table_b as b
where b.Name=a.name
and b.text=a.text
)
刪除B表的語句差不多。

3.分頁網上很多答案,可以去查,而且,資料庫不同,用到的函數也不同。oracle資料庫用rownum進行分頁,SQL SERVER使用rownum() over()或top。

4.insert into table_c(name,text,number)
select name,text, rownum from table_a
union all
select name,text, rownum from table_b
這是Oracle寫法

⑺ sql面試題

上面幾樓的SQL 語句不行.. 因為 假如 他59 分 加 5分後不就 64分 ,然後再加 2分 .則 不符合條件了..這個是更新語句,查詢語句上面幾樓的可以..
應該這么寫 .並且查詢時,假如 100分 ,因為滿足 100> 80 則跳轉到
case WHEN 分數>80 THEN 分數+1
所以上面的邏輯要清楚...

create procere pro_add
as
update 表名 set 分數=分數+1 where 分數 between 80 and 99
update 表名 set 分數=分數+2 where 分數 between 60 and 79
update 表名 set 分數=分數+5 where 分數 < 60
go

執行
exec pro_add
就可以了

⑻ sql面試題

1、select * from table where createdate=trunc(sysdate)-3;
select * from table where createdate=(sysdate-20/1440);

2、select name from table where score<60 group by name having count(score)>2
3、你的意思是不是這個 select max(id), name from table group by name
4、select name,total score from (select name,sum(score) total from table group by name order by total desc)where rownum<8 and rownum>4

⑼ sql面試題

你的要求「要求查詢:

政黨ID 政黨名稱 政黨人數 議員人數 。 並按議員人數排倒序 」
確定第三個要求查詢的是「 政黨人數」嗎?如果是「黨員人數」則一樓是正解...如果是「政黨人數」,那是指所有政黨的總人數嗎?是的話就應該是
select 政黨ID ,政黨名稱 ,sum(黨員人數) ,count(議員ID )
from A,B
where A.政黨ID = B.政黨ID
order by count(議員ID) desc
而且是要求一個人不能同時加入多個黨派

⑽ 求sql常考面試題

排序順序會影響系統性能嗎?
問:一些資料介紹說,在SQL Server 6.5中,排序方式會對系統性能造成影響,但是我並沒有發現有針對SQL Server 2000或SQL Server 7.0的類似說法。我想知道二分法檢索對SQL Server 2000程序到底有何意義。SQL Server 2000所支持的各種排序方式之間在執行性能上存在哪些差異呢?
答:請記住:各類排序方式間的性能差異受制於SQL Server在數據排序和數據比較上所花費的CPU周期數量。排序速度快並不代表性能就一定會得到改善。事實上,選擇較為「快速」的排序方法(例如二分法)可能會導致應用程序在其它方面的性能降低。
例如,假設您有一個查詢,該查詢通過last_name欄位進行搜索。二分法排序的規則規定:Smith 並不等於smith。您的應用程序開發人員可以通過要求所有數菥笮蔥問交蛐⌒蔥問嚼詞迪終飧鮃滴衤嘸5牽導實慕餼靄旆ㄊ嵌運閹鞅碇械乃惺菔褂肬PPER() 或者 LOWER() 函數。但不幸的是, 如果類似UPPER()這樣的函數對一個經過索引的列進行了操作,SQL Server將不再能夠使用索引搜索數據。在這種情況下,通過使用二分法所獲得的所有性能提升都將被花費在全表掃描上的巨大性能降低所抵消。所以,您無需考慮不同排序方法間可能存在的微小性能差異,您也無需費神考慮何種排序方法最能滿足程序開發人員和最終用戶的需要。
— SQL Server MVPs
--------------------------------------------------------------------------
日誌文件的增長和DBCC DBREINDEX
問:我有一個30GB的資料庫,我使用完全恢復模式。無論什麼時候,只要我使用資料庫一致性檢查程序(DBCC)語句DBCC DBREINDEX對特定的大型數據表進行重新索引,我都要將恢復模式改為Bulk_Logged,在重新索引過程完成後再改回完全模式。我希望這樣做能夠避免事務日誌文件急劇增長,但是隨後的日誌文件備份工作量卻非常大--有大約15GB。從邏輯上說,資料庫中的數據在重新索引後同原先並沒有什麼不同,只是索引重新進行了組織,那麼為什麼日誌文件還是那樣大呢?我怎樣才能避免日誌文件出現這樣的急劇增長呢?
答:是的,在重新索引前後的數據是完全一樣的,但是索引卻全面進行了更新。當您執行DBCC DBREINDEX命令的時候,SQL Server的日誌僅僅記錄了擴展盤區的分配情況(8頁面單位),而不是記錄了每一行或者每一頁所發生的變化。這種類型的日誌記錄方式避免了物理文件由於系統故障而遭到破壞,並且將更詳細的日誌記錄對系統吞吐量產生的影響降低到最小。
當您備份日誌文件的時候,SQL Server必須對分配在擴展盤區中的頁面進行備份,以便保持資料庫備份和日誌備份的一致性。如果SQL Server不備份這些頁面,您將不能夠切換回完全恢復模式,除非你進行一次完整的資料庫備份。您必須能夠從最近一次的完全備份、任何差異備份以及任何更新的事務日誌備份中對資料庫進行恢復。
——————————————————————————————————————————
再者,看你面試什麼方面的啦!
要是DBA的話,層次更高一些!

熱點內容
台灣伺服器怎麼選雲空間 發布:2025-01-09 16:50:06 瀏覽:437
防走失牽引繩密碼如何找回 發布:2025-01-09 16:39:14 瀏覽:705
壓縮機的構造 發布:2025-01-09 16:31:13 瀏覽:150
安卓iis伺服器搭建 發布:2025-01-09 16:31:11 瀏覽:856
鬥地主編程 發布:2025-01-09 16:31:11 瀏覽:595
我的世界花雨亭伺服器怎麼玩 發布:2025-01-09 16:31:10 瀏覽:320
在vmware上安裝linux 發布:2025-01-09 16:30:36 瀏覽:113
文件夾中隱藏文件怎麼顯示 發布:2025-01-09 16:23:57 瀏覽:774
w7共享文件夾如何加密碼 發布:2025-01-09 16:22:23 瀏覽:512
安卓介面除了typec還有什麼 發布:2025-01-09 15:51:35 瀏覽:51