1、 在表A中存在一部分记录,主键是重复的,将重复的主键删除,只保留改主键的第一条记录
假设表A的数据如下:
ID NAME NAME2 NAME3
1
A
2 A
3 B
4 B
5 C
处理后表A的数据如下:
ID
NAME NAME2 NAME3
1
A
2 B
3 C
答案:
delete test t1
where t1.rowid !=
(
select max(t2.rowid) from test t2
where t2.id = t1.id
)
2、请写出数据库关联更新的SQL,用B表的数据去更新A表,要求主键对应。
假设表A的数据如下:
ID
NAME
NAME2 NAME3
1
A
2
B
3
C
表B的数据如下:
ID
NAME2
NAME3
1
南京
1
2
北京
2
4
上海
3
更新表A后的结果如下:
ID
NAME1
NAME2
NAME3
1
A
南京
1
2
B
北京
2
3
C
要求sql要考虑通用情况,使用表中的任何数据,而不能删除A表中任何一行数据。
update test t1 set(t1.f2,t1.f3) = (select t2.f2,t2.f3 from test2 t2 where t1.id = t2.id)
3、有如下A、B两个表,如何将A表的数据查询出来,结果如B所示?
A表:
姓名
科目
分数
张三
语文
87
李四
数学
98
张三
英语
74
张三
数学
95
李四
语文
80
李四
英语
98
B表:
姓名
语文
数学
英语
总分
张三
李四
思路:
1:先需要想到行转列函数 decode 或 case
select a.name 姓名,
(case
when course = '语文' then
score
end) 语文,
(case
when course = '英语' then
score
end) 英语,
(case
when course = '数学' then
score
end) 数学,
score
from test a
order by a. name desc;
2:想到求列的总和(想到sum语句)
select a.name 姓名,
sum(decode(course, '语文', score)) 语文,
sum(decode(course, '数学', score)) 数学,
sum(decode(course, '英语', score)) 英语,
sum(score) 总分
from test a
group by a.name
order by a. name desc;
另外一种方法(不推荐)
select a.name 姓名,
sum(case
when course = '语文' then
score
end) 语文,
sum(case
when course = '英语' then
score
end) 英语,
sum(case
when course = '数学' then
score
end) 数学,
b.total 总分
from test a, (select name, sum(score) total from test group by name) b
where a.name = b.name
group by a.name, b.total
order by a. name desc;
另外一个相似题目:
有两张关联的表A、B
A: id acount pay_id B: pay_id B_acount
1 100 1 1 0
2 200 2 2 0
3 200 1
要求,更新表B,使得B_acount的值等于表A中对应的pay_id的所有acount之和。打印如下:
B: pay_id B_acount
1 300
2 200
------------------------------------------------------------------
update B
inner join A on B.pay_id = A.pay_id
set b_acount=
(select sum(acount) from A where A.pay_id=B.pay_id)
4:首先是需要对表做一个规划,即必须有自己的ID和ID对应这条记录的PID(父ID)。
简单的数据结构如下
id pid
1 0
2 0
3 1
4 1
5 2
6 2
7 3
8 4
9 5
比如你现在需要取出ID是1的以及其下所有的记录,如:
id pid
1 0
3 1
4 1
7 3
8 4
查询语句如下:
select *
from TEST
start with id = 1
connect by prior id = pid
order by id asc
如果有条件语句,比如where or when,其语句放在 start with前面
5:MERGE的用法
create table TEST
(
ID NUMBER,
NAME VARCHAR2(100),
PID NUMBER default 0
)
MERGE INTO test D
USING (SELECT 1 id FROM dual) S
ON (S.id = D.id)
WHEN MATCHED THEN
UPDATE SET D.name = 'aaA' where D.Id = 1
WHEN NOT MATCHED THEN
INSERT (d.id, D.name, d.pid) VALUES (1, 'A', 0)
参考:
第三题的题目参考自 http://haohaoxuexi.iteye.com/blog/1820541
分享到:
相关推荐
在SQL面试题(1)的答案中,使用了`RIGHT JOIN`将`testtable1`和`testtable2`进行连接。右连接返回所有右表(在这里是`testtable2`)的记录,即使在左表(这里是`testtable1`)中没有匹配的记录。对于左表中没有...
### 经典SQL面试题解析 #### 颇具挑战性的SQL面试题——删除冗余记录 **题目背景与分析** 在本题中,我们面对的是一个常见的问题:如何有效地处理数据库中的冗余数据。在实际应用中,由于各种原因(如数据导入...
根据提供的文件内容,我们可以整理出以下几个SQL面试题及其解答,这些问题主要聚焦于SQL查询技巧、数据处理以及数据结构的理解。 ### 1. 查询每门课都大于80分的学生姓名 **题目描述**:给定一张成绩表,其中包含...
"尚硅谷大数据技术之企业SQL面试题"这个资料集显然针对的是准备面试的求职者,特别是那些希望在大数据环境中运用SQL技能的角色。这份文档可能是由尚硅谷——一个知名的IT教育机构提供的,旨在帮助学习者掌握SQL在...
经典SQL面试练习50多道题知识点总结 经典SQL面试练习50多道题(含答案)是SQL开发人员面试的必备知识之一,本文档总结了多种SQL面试题,涵盖了多表查询、删除冗余数据、查询符合条件的记录等多方面的知识点。下面对...
SQL面试题详解 本资源旨在总结和详细解释SQL面试题中的各种问题和解决方案,并对每个问题进行了详细的解释和分析。 一、查询每门课都大于80分的学生姓名 问题:使用一条SQL语句查询出每门课都大于80分的学生姓名...
SQL 面试题 SQL(Structured Query Language)是一种特殊-purpose 编程语言,用于管理关系数据库管理系统(RDBMS)。SQL 面试题是 IT 行业中非常重要的一部分,涵盖了数据库管理、数据查询、数据操作等方面的知识。...
根据给定文件的信息,我们可以提炼出一系列SQL相关的知识点和技巧,这些内容对于准备参加SQL面试的人员来说非常有用。下面将对每个问题进行详细的解析。 ### SQL知识点详解 #### 1. 查询“001”课程比“002”课程...
从给定的Oracle SQL面试题中,我们可以提炼出多个关键知识点,这些知识点涵盖了SQL查询、数据操作、表结构设计以及Oracle数据库的一些高级特性。以下是对这些知识点的详细解析: ### 1. 数据分组与聚合函数 在第一...
根据提供的文件信息,我们可以归纳出一系列重要的SQL知识点及其相关内容。这份资料主要面向已经掌握SQL基础知识的...这些内容不仅有助于读者更好地理解SQL的核心概念,也为准备SQL面试的开发者提供了宝贵的参考材料。
SQL面试宝典2010版 本资源摘要信息涵盖了 SQL 面试中的多个知识点,包括查询优化、数据删除、数据组合、数据查询等。下面是对每个知识点的详细解释: 1. 查询每门课都大于 80 分的学生姓名 在这个问题中,我们...
二、SQL 面试题 1. **SQL 数据类型:** 包括数值类型(如 INT、FLOAT)、字符串类型(如 VARCHAR、CHAR)、日期时间类型(如 DATE、TIMESTAMP)等。 2. **SELECT 语句:** 用于从数据库中选择数据,如 `SELECT *...
### SQL面试汇总经典知识点解析 #### 一、SQL语句执行流程与优化 - **重要性**:了解SQL语句的执行流程对于优化查询效率至关重要。 - **执行流程**: - 解析(Parse):将SQL语句转换成内部表示形式。 - 优化...
根据提供的文件信息,我们可以整理出以下几个关键的 SQL 面试题目及解答: ### 1. 使用 `GROUP BY` 处理数据 **题目描述**: 假设有一个表 #tmp,包含两列:日期 rq 和胜负标记 shengfu(其中 shengfu 可能为空)...
Oracle SQL 面试题知识点总结 本文档总结了 Oracle SQL 面试题中的常见知识点,涵盖了 SQL 语句编写、表操作、数据查询、数据分析等方面的内容。 一、SQL 语句编写 1. 查询每门课都大于 80 分的学生姓名: 可以...
这些是SQL面试中常见的主题,深入理解和实践这些知识点,可以为面试和实际工作中的数据库管理提供坚实的基础。通过不断的练习和实战,可以提升SQL技能,成为一名优秀的数据库管理员或开发人员。
数据分析面试题-SQL面试题汇总 本文档汇总了两道数据分析面试题,涵盖了 SQL 编程语言的多个方面,包括建表、插入数据、排序、连接、分组、聚合函数、日期操作等。通过这两道题目,我们可以了解数据分析师需要具备...
### SQL面试大全38题(基本包含所有知识点) #### 知识点概览 本篇内容将基于给定的SQL查询题目,详细解析其中涉及的关键知识点,并深入探讨这些知识点的实际应用场景,帮助读者更好地理解并掌握SQL的核心技术。 ...
### SQL面试题解析 #### 题目1: 查询课程编号为001的成绩高于课程编号为002的学生学号。 ```sql SELECT a.S# FROM (SELECT S#, score FROM SC WHERE C# = '001') a, (SELECT S#, score FROM SC WHERE C# = '002') ...
根据给定文件中的标题“SQL面试题4(不错).doc”、描述“SQL面试题(不错),比较详细,可以值得参考。”以及标签“sql”,我们可以看出这份文档主要聚焦于SQL语言的应用,尤其是针对面试场景下的题目解答。下面将...