sql优化面试题及答案(sql面试题)

本文目录
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面试题,请大神解答,急!!!
第一题,最高的10-20。
1234 select * from (select colD,colE,dense_rank() over(order by colG desc) as rk from tableb) where rk between 10 and 20 --当然面试的话这里可以注明 dense_rank 和 rank区别等等。
第二题,2楼写的就可以了
第三题,注意题目是人数之和
12345 select count(*) as cnt from tableB where colA in (select colA from tableA start with colA = 传入idconnect by prior colA = colB)
第四题
--测试数据
with tableA as (select 1 as colA,0 as colB,’北京’ as colC from dualunion allselect 2 as colA,0 as colB,’上海’ from dual),tableB as(select 1 as colD,’人员1’ as colE,1 as colA,2000 as colG,0 as colH from dualunion allselect 2,’人员2’,1,2000,0 from dualunion allselect 3,’人员3’,1,2000,0 from dualunion allselect 4,’人员4’,1,2000,0 from dualunion allselect 5,’人员5’,1,2000,1 from dualunion allselect 6,’人员6’,2,2000,1 from dualunion allselect 7,’人员7’,1,2000,1 from dual)--查询sql select decode(t.colH,0,’女’,’男’) as gender,max(decode(t.colC,’北京’,t.cnt,0)) as 北京,max(decode(t.colC,’上海’,t.cnt,0)) as 上海 from (select a.colC,b.colH,count(*) as cnt from tableB bleft join tableA a on a.colA = b.colAgroup by colC,colH) t group by t.colH
这里可以解释下本sql的思路:--首先查出每个地区不同性别的人数,在行转列(由于题目很明显告诉你固定数据)
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.日期
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
采纳吧~
SQL 优化问题
lz应该放上点分,0不给力呀!
---------------------------------------
方案有N多:
第一:减少表的扫描计数,如下方式基本可以减少三倍扫描计数,千万记录能够优化几十毫秒。
select A.target_id as id,B.title as title
from a_tg as A
left join a_ta as B on (A.target_id=B.id)
left join a_tb as C on (A.target_id=C.id)
left join a_td as D on (A.target_id=D.id)
where A.data like ’%tag%’ and (A.ift=’a_ta’ or A.ift=’a_tb’ or A.ift=’a_tc’)
LOOK! 短小精干的别名也是能提速的!O(∩_∩)O哈哈哈~
---------------------------------------------------------------------------------------------------------------
第二:建立联合索引 ,如果进行排序聚合,千万记录搜索,速度可以调高5倍上下
。target_id 和 ift 建立联合索引。
--------------------------------------------------------------------------------------------------------------
第三:构建设计,将名值等元组放入主信息表,这个工程估计可以提速百倍以上,因为没必要关联表了。
--------------------------------------------------------------------------------------------------------------
第四:像这种内容匹配是否可以用全局索引,或是 like ’XXX%’的方式就要看LZ怎么对待了
-------------------------------------------------------------------------------------------------------------------
如果LZ还不满意,就放上300分,SQL高手团一定献上更优异的策略。
几个面试中遇到的SQL题,大家帮帮忙
1,select * from pages where url=’..’ union all
select * from pages where title=’...’ union all
select * from pages where body=’...’
2,select case when a》b then a when b《=c then c else b end from 表
3,A表建触发器
CREATE TRIGGER myt
ON 表A
FOR UPDATE
AS
If UPDATE(主键)
BEGIN
update b
set 同字段1=a.同字段1,同字段2=a.同字段2
from 表B b,inserted a
where b.主键=a.主键
END

更多文章:
issued retroactively(FORM E上盖“ISSUED RETROACTIVELY”的问题,小女在线等待)
2026年10月15日 10:30
begin和start的区别(start与begin的区别)
2026年10月15日 09:20
vant官网中文(范特365 是韩国化妆品VANT36.5吗)
2026年10月15日 09:10
prison break(越狱(prison break)到底是在讲个什么)
2026年10月15日 06:50
c程序设计第五版教学视频(求C程序设计(第五版)谭浩强教材源代码、视频课件等电子版资料!谢谢大家!)
2026年10月15日 06:40
十六进制转二进制表(16进制转为2进制、8进制、10进制的公式)
2026年10月15日 06:10





