当前位置:首页 » 编程语言 » 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-10 03:27:40 浏览:766
主机访问P 发布:2025-01-10 03:17:09 浏览:755
滴滴出行脚本 发布:2025-01-10 03:17:03 浏览:743
安卓扁口有线耳机哪个好 发布:2025-01-10 03:12:06 浏览:643
cubemx中的时钟如何配置 发布:2025-01-10 03:09:51 浏览:726
电脑页面怎么设置密码 发布:2025-01-10 03:05:41 浏览:878
mp4加密提取 发布:2025-01-10 03:05:39 浏览:838
我的世界服务器地址后缀 发布:2025-01-10 02:55:40 浏览:522
百分30利润怎么算法 发布:2025-01-10 02:47:26 浏览:964
怎么查看已连接的wifi密码 发布:2025-01-10 02:45:59 浏览:24