當前位置:首頁 » 編程語言 » sql面試題窗口函數
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql面試題窗口函數

發布時間: 2022-07-24 04:45:52

sql面試題

1,答
select * into B庫.table_b from A庫.table_a

2,答
select * into A庫.new_table from A庫.table_a left outer join B庫.table_b on A庫.table_a.name=B庫.table_b.name and A庫.table_a.Text=B庫.table_b.text

delete from A庫.table_a left outer join A庫.new_table on A庫.table_a.name=A庫.new_table.name and A庫.table_a.Text=A庫.new_table.text
delete from B庫.table_b left outer join A庫.new_table on b庫.table_b.name=A庫.new_table.name and b庫.table_b.Text=A庫.new_table.text

3 答

select * from (select top 10 * from (select top 100 * from 表 )as a) as b

4 答
select * into 表c from 表A
union all
select * into 表c from 表B

試試如果不對請指正。

Ⅱ 求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的話,層次更高一些!

Ⅲ 簡述什麼是oracle的窗口函數

窗口函數可以計算一定 記錄范圍內、一定值域內、或者一段時間內的累計和以及移動平均值等等.之所以使用窗口這個術語,是因為對結果的處理使用了一個滑動的查詢結果集范圍。

Ⅳ sql面試題,請大神解答,急!!!

第一題,最高的10-20。
1234select*from(selectcolD,colE,dense_rank()over(orderbycolGdesc)asrkfromtableb)whererkbetween10and20--當然面試的話這里可以註明dense_rank和rank區別等等。

第二題,2樓寫的就可以了

第三題,注意題目是人數之和
12345selectcount(*)ascntfromtableBwherecolAin(=傳入idconnectbypriorcolA=colB)

第四題
--測試數據
withtableAas(select1ascolA,0ascolB,'北京',0ascolB,'上海'fromal),tableBas(select1ascolD,'人員1'ascolE,1ascolA,2000ascolG,0ascolHfromalunionallselect2,'人員2',1,2000,0fromalunionallselect3,'人員3',1,2000,0fromalunionallselect4,'人員4',1,2000,0fromalunionallselect5,'人員5',1,2000,1fromalunionallselect6,'人員6',2,2000,1fromalunionallselect7,'人員7',1,2000,1fromal)--查詢sqlselectdecode(t.colH,0,'女','男')asgender,max(decode(t.colC,'北京',t.cnt,0))as北京,max(decode(t.colC,'上海',t.cnt,0))as上海from(selecta.colC,b.colH,count(*).colA=b.colAgroupbycolC,colH)tgroupbyt.colH
這里可以解釋下本sql的思路:--首先查出每個地區不同性別的人數,在行轉列(由於題目很明顯告訴你固定數據)

Ⅳ 什麼叫窗口函數

使用窗口函數,您可以通過計算每行周圍窗口上的集合值來分析數據。結果集會返回表示一組行的摘要值。您可以使用窗口函數計算一家公司在一段指定時間內的銷售數據的移動平均值。

除 LIST 以外的任何集合函數都可以與窗口函數聯合使用。
示例
下面的示例顯示了一個窗口函數。查詢返回一個結果集,該結果集按部門劃分數據,然後提供員工薪水的累計匯總(從在公司的時間最長的員工開始)。結果集只包括居住在加利福尼亞、猶他州、紐約或亞利桑那州的那些雇員。Sum Salary 列提供了雇員薪水的累計總額。

SELECT dept_id, emp_lname, start_date, salary,
SUM(salary) OVER (PARTITION BY dept_id
ORDER BY start_date
RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS "Sum_Salary"
FROM employee
WHERE state IN ('CA', 'UT', 'NY', 'AZ') AND dept_id IN ('100', '200')
ORDER BY dept_id, start_date;下面的表是查詢的結果集。結果集按部門劃分。

對於部門 100,來自加利福尼亞、猶他州、紐約或亞利桑那州的雇員的薪水累計總額是 $434,091.69,而部門 200 的雇員的薪水累計總額是 $250,200.00。

Ⅵ SQL 面試題之三。。。有難度。。。

一般是寫一個存儲過程,用個游標循環每條處理,很容易就搞定了。以後變動也靈活。
如果不用存儲過程,單SQL語句實現,可以這樣:
update salary t1
set t1.s = (select sum(t2.s)
from salary t2
where t2.year >=add_month(t1.year,-24)
and t2.year <=add_month(t1.year,-12)
);

Ⅶ SQL資料庫面試題 急急急

a)select pname as '商品名',avg(qty) as 平均銷售量 from s,p,m where m.city='上海' and s.mno=m.mno and p.pno=s.pno,select p.Pno,p.pname,sum(s.qty)
from s left join p on s.pno=p.pno left join m on p.Mno=m.Mno
where m.city='上海市'
group by p.Pno,p.pname,p.city,p.color
b)、先刪除Sale表的外鍵PNO,再刪除gds表。

c)聯系:視圖(view)是在基本表之上建立的表,它的結構(即所定義的列)和內容(即所有數據行)都來自基本表,它依據基本表存在而存在。一個視圖可以對應一個基本表,也可以對應多個基本表。視圖是基本表的抽象和在邏輯意義上建立的新關系
區別:1、視圖是已經編譯好的sql語句。而表不是
2、視圖沒有實際的物理記錄。而表有。
3、表是內容,視圖是窗口
4、表只用物理空間而視圖不佔用物理空間,視圖只是邏輯概念的存在,表可以及時四對它進行修改,但視圖只能有創建的語句來修改
5、表是內模式,視圖是外模式
6、視圖是查看數據表的一種方法,可以查詢數據表中某些欄位構成的數據,只是一些SQL語句的集合。從安全的角度說,視圖可以不給用戶接觸數據表,從而不知道表結構。
7、表屬於全局模式中的表,是實表;視圖屬於局部模式的表,是虛表。
8、視圖的建立和刪除隻影響視圖本身,不影響對應的基本表。

Ⅷ sql語句 面試題

這個簡單,看答案,採納吧~
第一題是,用雙top結構就可以查出來
1,select * from 學生表 where 學號 in
(select top 5 學號 from 成績表 where 學號 not in(select top 10 學號 from 成績表 order by 分數) order by 分數)

第二題是比較簡單,用復合函數就行了,having
select 姓名 from 成績表 group by 姓名 having avg(分數)>80
採納吧~

Ⅸ mysql有窗口函數嗎

開窗函數就有點麻煩了。
源代碼:select t.*, ROW_NUMBER() OVER( PARTITION BY t.ticket_type ORDER BY t.open_ticket_time DESC ) as rn
from
term t
where
t.ticket_type in(
6, 5, 0, 1, **, *, **, **, *2, 2, 3, 4, 8, 7
)
and t.term_status >= 5
這個代碼的意思是根據open_ticket_time倒序的順序將ticket_type 是( 6, 5, 0, 1, **, *, **, **, *2, 2, 3, 4, 8, 7)還有term_status >= 5的數據對ticket_type 進行分組後排名ROW_NUMBER() 。