当前位置:首页 » 编程语言 » sql面试试题
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql面试试题

发布时间: 2022-05-22 04:44:58

1. 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的思路:--首先查出每个地区不同性别的人数,在行转列(由于题目很明显告诉你固定数据)

2. 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

试试如果不对请指正。

3. 面试题目(sql)

1、忍不住想说一句,因为第一题中的字段类型是
【日期型】,而各种数据库操作日期型数据有不同的方法,没有一种共通的方法,所以脱离了数据库而言没有一种共通的sql。
2、select
ID,NAME,ADDRESS,PHONE,LOGDATE
from
T
where
ID
in(
select
ID
from
T
group
by
NAME
having
count(*)>1)
order
by
NAME;
3、delete
from
T
where
ID
not
in
(select
min(id)
from
T
group
by
name);
4、update
T
set
T.ADDRESS=(select
E.ADDRESS
from
E
where
E.NAME=T.NAME),
T.PHONE=(select
E.PHONE
from
E
where
E.NAME=T.NAME);
5、这个不同的数据库也有不同的处理方法,不能脱离数据库谈了。
如:SqlServer或者access可以使用
top
oracle可以使用
rownum

---
以上,希望对你有所帮助。

4. 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、视图的建立和删除只影响视图本身,不影响对应的基本表。

5. SQL 面试题

SELECT aa.日期, aa.数值, SUM(lj.数值) AS 累计
FROM 累积 lj INNER JOIN
(SELECT *
FROM 累积) aa ON lj.日期 <= aa.日期
WHERE (aa.日期 <= '2005-05-04') --日期可以变成时间段
GROUP BY aa.日期, aa.数值
ORDER BY aa.日期

6. 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的工作室的名字以及对应的平均电影长度。

7. 经典的SQL面试题目,百度有答案,谁有更简洁的

select a.id,a.proid as pro1,b.proid as pro2 from (select * from tablename where proid =1) a,(select * from tablename where proid =2) b where a.id=b.id

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
采纳吧~

9. SQL语句面试题

SELECT*,
(SELECTCOUNT(*)FROM(SELECTCOUNT(*),b.sidFROMscbLEFTJOINcoursecONb.Cid=c.CidGROUPBYb.sid,c.tid)owWHEREow.sid=a.sid)as'
选课数量',
(SELECTsum(Score)FROMScdWHEREa.sid=d.sid)as'总成绩'
FROMstudenta
;

SELECTd.sid,d.snamefromteachera
LEFTJOINcoursebona.tid=b.tid
LEFTJOINscconc.cid=b.cid
leftJOINstudentdONd.sid=c.sid
WHEREa.tname='叶萍';

SELECTsid,sname
FROMstudent
WHEREsidin(selecta.sid
FROMscAleftjoinscbona.sid=b.sid
WHEREa.cid=1andb.cid=2anda.score>b.score)

SELECTsc.Sid,sum(CASEWHENc.Cname='
数学'thensc.Scoreelse0end)数学,SUM(casewhenc.Cname='物理
'THENsc.ScoreELSE0END)物理,AVG(sc.Score)平均分
FROMsc
INNERJOINCourseconsc.Cid=c.Cid
WHEREc.Cnamein('数学','物理')
GROUPBYsc.Sid
ORDERBYAVG(sc.Score)DESC

insertintoSc(Sid,Cid,Score)values(003,3,85);

insertintoSc(Sid,Cid,Score)values(003,3,30);

首先这个不知道是你i写错了还是怎么一个人化学成绩有2个所以我在这里按照你这个上做的查询所以有一个人是选了单个课程

10. 数据库SQL查询语句面试题

5.1
select a.username,b.deptname from users a,dept b where a.dept_id=b.id;

5.2
update users set dept_id='9' where dept_id='2';

5.3
select a.deptname,b.count_id from dept a,(select dept_id,count(id) as count_id from users group by dept_id having count(id)>1) b where a.id=b.dept_id;

5.4
select a.deptname,b.count_man,c.count_woman from dept a,(select dept_id,count(sex) as count_man from users where sex='男' group by dept_id) b,(select dept_id,count(sex) as count_woman from users where sex='女' group by dept_id) c where a.id=b.dept_id and a.id=c.dept_id;

5.5
添加历史记录表
create table history(
id number(8), -- 记录编号
dept_id varchar2(5), -- 部门ID
user_id varchar2(5), -- 用户ID
change_date date -- 变动日期
);