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

更多文章:
dropdownlist 绑定(DropDownList 绑定所有项 并 显示指定项)
2026年10月11日 08:50
易语言网页api接口怎么调用(易语言,怎么读取网页json的api)
2026年10月11日 08:00
majority of(the majority of 和 a majority of的区别以及用法例句)
2026年10月11日 07:40
another time(another time和other time的区别)
2026年10月11日 05:00






