- 相關(guān)推薦
sql面試筆試題
SQL是一種特殊目的的編程語言,是一種數(shù)據(jù)庫(kù)查詢和 程序設(shè)計(jì)語言,各位大神,看看下面的sql面試筆試題吧!
sql面試筆試題
1.一道SQL語句面試題,關(guān)于group by
表內(nèi)容:
20050509 勝
20050509 勝
20050509 負(fù)
20050509 負(fù)
20050510 勝
20050510 負(fù)
20050510 負(fù)
如果要生成下列結(jié)果, 該如何寫sql語句?
勝 負(fù)
20050509 2 2
20050510 1 2
create table #tmp(rq var10),shengfu n1))
into #tmp values('20050509','勝')
into #tmp values('20050509','勝')
into #tmp values('20050509','負(fù)')
into #tmp values('20050509','負(fù)')
into #tmp values('20050510','勝')
into #tmp values('20050510','負(fù)')
into #tmp values('20050510','負(fù)')
1)select rq, sum(case when shengfu='勝' then 1 else 0 end)'勝',sum(case when shengfu='負(fù)' then 1 else 0 end)'負(fù)' from #tmp group by rq
2) select N.rq,N.勝,M.負(fù) from (
select rq,勝=count() from #tmp where shengfu='勝'group by rq)N inner join
(select rq,負(fù)=count() from #tmp where shengfu='負(fù)'group by rq)M on N.rq=M.rq
3)select a.col001,a.a1 勝,b.b1 負(fù) from
(select col001,count(col001) a1 from temp1 where col002='勝' group by col001) a,
(select col001,count(col001) b1 from temp1 where col002='負(fù)' group by col001) b
where a.col001=b.col001
2.請(qǐng)教一個(gè)面試中遇到的SQL語句的查詢問題
表中有A B C三列,用SQL語句實(shí)現(xiàn):當(dāng)A列大于B列時(shí)選擇A列否則選擇B列,當(dāng)B列大于C列時(shí)選擇B列否則選擇C列。
select (case when a>b then a else b end ),
(case when b>c then b esle c end)
from table_name
3.面試題:一個(gè)日期判斷的sql語句?
請(qǐng)取出tb_send表中日期(SendTime字段)為當(dāng)天的所有記錄?(SendTime字段為datetime型,包含日期與時(shí)間)
select from tb where datediff(dd,SendTime,getdate())=0
4.有一張表,里面有3個(gè)字段:語文,數(shù)學(xué),英語。其中有3條記錄分別表示語文70分,數(shù)學(xué)80分,英語58分,請(qǐng)用一條sql語句查詢出這三條記錄并按以下條件顯示出來(并寫出您的思路):
大于或等于80表示優(yōu)秀,大于或等于60表示及格,小于60分表示不及格。
顯示格式:
語文 數(shù)學(xué) 英語
及格 優(yōu)秀 不及格
select
(case when 語文>=80 then '優(yōu)秀'
when 語文>=60 then '及格'
else '不及格') as 語文,
(case when 數(shù)學(xué)>=80 then '優(yōu)秀'
when 數(shù)學(xué)>=60 then '及格'
else '不及格') as 數(shù)學(xué),
(case when 英語>=80 then '優(yōu)秀'
when 英語>=60 then '及格'
else '不及格') as 英語,
from table
5.在sqlserver2000中請(qǐng)用sql創(chuàng)建一張用戶臨時(shí)表和系統(tǒng)臨時(shí)表,里面包含兩個(gè)字段ID和IDValues,類型都是int型,并解釋下兩者的區(qū)別?
用戶臨時(shí)表:create table #xx(ID int, IDValues int)
系統(tǒng)臨時(shí)表:create table ##xx(ID int, IDValues int)
區(qū)別:
用戶臨時(shí)表只對(duì)創(chuàng)建這個(gè)表的用戶的Session可見,對(duì)其他進(jìn)程是不可見的.
當(dāng)創(chuàng)建它的進(jìn)程消失時(shí)這個(gè)臨時(shí)表就自動(dòng)刪除.
全局臨時(shí)表對(duì)整個(gè)SQL Server實(shí)例都可見,但是所有訪問它的Session都消失的時(shí)候,它也自動(dòng)刪除.
6.sqlserver2000是一種大型數(shù)據(jù)庫(kù),他的存儲(chǔ)容量只受存儲(chǔ)介質(zhì)的限制,請(qǐng)問它是通過什么方式實(shí)現(xiàn)這種無限容量機(jī)制的。
它的所有數(shù)據(jù)都存儲(chǔ)在數(shù)據(jù)文件中(.dbf),所以只要文件夠大,SQL Server的存儲(chǔ)容量是可以擴(kuò)大的.
SQL Server 2000 數(shù)據(jù)庫(kù)有三種類型的文件:
主要數(shù)據(jù)文件
主要數(shù)據(jù)文件是數(shù)據(jù)庫(kù)的起點(diǎn),指向數(shù)據(jù)庫(kù)中文件的.其它部分。每個(gè)數(shù)據(jù)庫(kù)都有一個(gè)主要數(shù)據(jù)文件。主要數(shù)據(jù)文件的推薦文件擴(kuò)展名是 .mdf。
次要數(shù)據(jù)文件
次要數(shù)據(jù)文件包含除主要數(shù)據(jù)文件外的所有數(shù)據(jù)文件。有些數(shù)據(jù)庫(kù)可能沒有次要數(shù)據(jù)文件,而有些數(shù)據(jù)庫(kù)則有多個(gè)次要數(shù)據(jù)文件。次要數(shù)據(jù)文件的推薦文件擴(kuò)展名是 .ndf。
日志文件
日志文件包含恢復(fù)數(shù)據(jù)庫(kù)所需的所有日志信息。每個(gè)數(shù)據(jù)庫(kù)必須至少有一個(gè)日志文件,但可以不止一個(gè)。日志文件的推薦文件擴(kuò)展名是 .ldf。
7.請(qǐng)用一個(gè)sql語句得出結(jié)果
從table1,table2中取出如table3所列格式數(shù)據(jù),注意提供的數(shù)據(jù)及結(jié)果不準(zhǔn)確,只是作為一個(gè)格式向大家請(qǐng)教。
如使用存儲(chǔ)過程也可以。
table1
月份mon 部門dep 業(yè)績(jī)yj
一月份 01 10
一月份 02 10
一月份 03 5
二月份 02 8
二月份 04 9
三月份 03 8
table2
部門dep 部門名稱dname
01 國(guó)內(nèi)業(yè)務(wù)一部
02 國(guó)內(nèi)業(yè)務(wù)二部
03 國(guó)內(nèi)業(yè)務(wù)三部
04 國(guó)際業(yè)務(wù)部
table3 (result)
部門dep 一月份 二月份 三月份
01 10 null null
02 10 8 null
03 null 5 8
04 null null 9
1)
select a.部門名稱dname,b.業(yè)績(jī)yj as '一月份',c.業(yè)績(jī)yj as '二月份',d.業(yè)績(jī)yj as '三月份'
from table1 a,table2 b,table2 c,table2 d
where a.部門dep = b.部門dep and b.月份mon = '一月份' and
a.部門dep = c.部門dep and c.月份mon = '二月份' and
a.部門dep = d.部門dep and d.月份mon = '三月份' and
2)
select a.dep,
sum(case when b.mon=1 then b.yj else 0 end) as '一月份',
sum(case when b.mon=2 then b.yj else 0 end) as '二月份',
sum(case when b.mon=3 then b.yj else 0 end) as '三月份',
sum(case when b.mon=4 then b.yj else 0 end) as '四月份',
sum(case when b.mon=5 then b.yj else 0 end) as '五月份',
sum(case when b.mon=6 then b.yj else 0 end) as '六月份',
sum(case when b.mon=7 then b.yj else 0 end) as '七月份',
sum(case when b.mon=8 then b.yj else 0 end) as '八月份',
sum(case when b.mon=9 then b.yj else 0 end) as '九月份',
sum(case when b.mon=10 then b.yj else 0 end) as '十月份',
sum(case when b.mon=11 then b.yj else 0 end) as '十一月份',
sum(case when b.mon=12 then b.yj else 0 end) as '十二月份',
from table2 a left join table1 b on a.dep=b.dep
8.華為一道面試題
一個(gè)表中的Id有多個(gè)記錄,把所有這個(gè)id的記錄查出來,并顯示共有多少條記錄數(shù)。
select id, Count() from tb group by id having count()>1
select from(select count(ID) as count from table group by ID)T where T.count>1
表形式如下:
Year Salary
2000 1000
2001 2000
2002 3000
2003 4000
想得到如下形式的查詢結(jié)果
Year Salary
2000 1000
2001 3000
2002 6000
2003 10000
sql語句怎么寫?
連接查詢
SELECT b.YEAR, SUM(a.salary) salary FROM hello a, hello b WHERE a.YEAR <= b.YEAR GROUP BY b.YEAR
子查詢
select year ,(select sum(salary) from hello as B where B.year<=A.year ) from hello as A
1.用一條SQL語句查詢出每門課都大于80分的學(xué)生姓名
name kecheng fenshu
張三 語文 81
張三 數(shù)學(xué) 75
李四 語文 76
李四 數(shù)學(xué) 90
王五 語文 81
王五 數(shù)學(xué) 100
王五 英語 90
A: select distinct name from table where name not in (select distinct name from table where fenshu<=80)
2.學(xué)生表 如下:
自動(dòng)編號(hào) 學(xué)號(hào) 姓名課程編號(hào)課程名稱分?jǐn)?shù)
1 2005001 張三 0001 數(shù)學(xué) 69
2 2005002 李四 0001 數(shù)學(xué) 89
3 2005001 張三 0001 數(shù)學(xué) 69
刪除除了自動(dòng)編號(hào)不同,其他都相同的學(xué)生冗余信息
A: tablename where 自動(dòng)編號(hào) not in(select min(自動(dòng)編號(hào)) from tablename group by 學(xué)號(hào),姓名,課程編號(hào),課程名稱,分?jǐn)?shù))
一個(gè)叫department的表,里面只有一個(gè)字段name,一共有4條紀(jì)錄,分別是a,b,c,d,對(duì)應(yīng)四個(gè)球?qū),現(xiàn)在四個(gè)球?qū)M(jìn)行比賽,用一條sql語句顯示所有可能的比賽組合.
你先按你自己的想法做一下,看結(jié)果有我的這個(gè)簡(jiǎn)單嗎?
答:select a.name, b.name
from team a, team b
where a.name < b.name
請(qǐng)用SQL語句實(shí)現(xiàn):從TestDB數(shù)據(jù)表中查詢出所有月份的發(fā)生額都比101科目相應(yīng)月份的發(fā)生額高的科目。請(qǐng)注意:TestDB中有很多科目,都有1-12月份的發(fā)生額。
AccID:科目代碼,Occmonth:發(fā)生額月份,DebitOccur:發(fā)生額。
數(shù)據(jù)庫(kù)名:JcyAudit,數(shù)據(jù)集:Select from TestDB
答:select a.
from TestDB a
,(select Occmonth,max(DebitOccur) Debit101ccur from TestDB where AccID='101' group by Occmonth) b
where a.Occmonth=b.Occmonth and a.DebitOccur>b.Debit101ccur
面試題:怎么把這樣一個(gè)表兒
year month amount
1991 1 1.1
1991 2 1.2
1991 3 1.3
1991 4 1.4
1992 1 2.1
1992 2 2.2
1992 3 2.3
1992 4 2.4
查成這樣一個(gè)結(jié)果
year m1 m2 m3 m4
1991 1.1 1.2 1.3 1.4
1992 2.1 2.2 2.3 2.4
答案一、
select year,
(select amount from aaa m where month=1 and m.year=aaa.year) as m1,
(select amount from aaa m where month=2 and m.year=aaa.year) as m2,
(select amount from aaa m where month=3 and m.year=aaa.year) as m3,
(select amount from aaa m where month=4 and m.year=aaa.year) as m4
from aaa group by year
這個(gè)是ORACLE 中做的:
select from (select name, year b1, lead(year) over
(partition by name order by year) b2, lead(m,2) over(partition by name order by year) b3,rank()over(
partition by name order by year) rk from t) where rk=1;
【sql面試筆試題】相關(guān)文章:
經(jīng)典SQL語句大全07-21
面試試題精選08-08
外企面試英語面試試題09-26
社工面試面試試題及答案08-04
文員面試技巧與面試題08-09
Oracle面試試題09-26
SEO經(jīng)典面試試題09-26
護(hù)士面試試題09-26
java面試簡(jiǎn)答試題09-25
Cisco的面試題09-25