`
liaobinxu
  • 浏览: 43334 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

sql解惑-跟踪投资组合问题

SQL 
阅读更多
    这个谜底是给你的。 或许我是只见树木, 不见森林, 但是如果想以一种不会导致无数循环引用的优雅方式来解决问题这个问题, 似乎并不容易。
    这个谜底似乎是一个关于完整的系统, 但我的问题是: 是否存在一个方法, 在表设计阶段消除明显的循环引用。
    你必须记录一个组织中的投资问题, 以备查找、检索。 这个投资组合有很多附加属性, 这里只列出一些与此谜题相关的属性:  
create table Portfolios
(
file_id integer not null primary key,
issue_date date not null,
superseded_file_id integer not null references Portfolios(file_id),
supersedes_file_id integer not null references Portfolios(file_id)
);
下面的谜底:
1.需要记录那一个投资组合代替了当前的投资组合
2.需要记录这个投资组合替代的是那一种投资组合
3.需要能够恢复某一个投资组合(这个做的结论会替代一个或一系列投资组合, 并导致循环引用。)
4.因为issue_date的存在,能够记录日期, 但那时如果恢复某个投资组合,那就又一个难题!
5.不论select语句上的投资组合是什么, 都能够select出最新的投资组合。
6.需要能够对一些的文档重新生成审计追踪。

方法#1
因为在谜底的说明中无意表达式“前驱”和“后驱”的说法, 所以可知这个问题是处理序数计数的。让我们应用已知的嵌套集合代码代替它。
    首先, 创建一个表, 容纳每个文件的所有信息:
    create table Portfolios(
        file_id  integer not null primary key,
        other_stuff varchar2(40) not null
    );
向Profolios表中插入数据
insert into portfolios values(222,'stuff');
insert into portfolios values(223,'old stuff');
insert into portfolios values(224,'new stuff');
insert into portfolios values(225,'borrowed stuff');
insert into portfolios values(322,'blue stuff');
insert into portfolios values(323,'purple stuff');
insert into portfolios values(324,'red stuff');
insert into portfolios values(325,'green stuff');
insert into portfolios values(999,'yellow stuff');


然后创建一个表容纳文档的后继,并包含两个特殊的列: chain 和next
create table Succession(
    chain integer not null ,
    next integer default 0 not null,
    file_id integer not null references Portfolios(file_id),
    suc_date date not null,
    primary key(chain, next)
);

向succession表中插入数据
insert into Succession values(1,(select count(*) from Succession where chain=1),222,to_date('2007-11-1','yyyy-mm-dd'));
insert into Succession values(1,(select count(*) from Succession where chain=1),223,to_date('2007-11-2','yyyy-mm-dd'));
insert into Succession values(1,(select count(*) from Succession where chain=1),224,to_date('2007-11-4','yyyy-mm-dd'));
insert into Succession values(1,(select count(*) from Succession where chain=1),225,to_date('2007-11-5','yyyy-mm-dd'));
insert into Succession values(1,(select count(*) from Succession where chain=1),999,to_date('2007-11-25','yyyy-mm-dd'));

insert into Succession values(2,(select count(*) from Succession where chain=2),322,to_date('2007-11-1','yyyy-mm-dd'));
insert into Succession values(2,(select count(*) from Succession where chain=2),323,to_date('2007-11-2','yyyy-mm-dd'));
insert into Succession values(2,(select count(*) from Succession where chain=2),324,to_date('2007-11-4','yyyy-mm-dd'));

insert into Succession values(2,(select count(*) from Succession where chain=2),322,to_date('2007-11-5','yyyy-mm-dd'));
insert into Succession values(2,(select count(*) from Succession where chain=2),323,to_date('2007-11-12','yyyy-mm-dd'));
insert into Succession values(2,(select count(*) from Succession where chain=2),999,to_date('2007-11-25','yyyy-mm-dd'));


选出最新组合,无论组合怎样变化,我都能选出最新的组合:通过某个组合的max(next)找到file_id, 然后找到Portfolios就可以
select distinct * from Succession s, Portfolios p
where s.file_id =p.file_id and next=
(select max(next) from Succession s2
where s.chain=s2.chain);


完成审计功能: 通过chain, next排序就可以得到新顺序的投资计划了
select chain , next ,p1.file_id, other_stuff , suc_date
from succession s1,portfolios p1
where s1.file_id=p1.file_id
order by chain, next;


记录这个投资组合组合替代哪个投资组合
select s1. file_id , f2.file_id
from succession s1, succession s2
where s1.chain=s2.chain
and s1.next=s2.next+1 and s1.file_id=999;




分享到:
评论

相关推荐

    sql解惑-麻醉师问题

    标题“SQL解惑-麻醉师问题”提示我们这可能是一个关于使用SQL解决特定问题的案例,特别是与医学领域的麻醉师工作相关的数据查询或分析。在描述中提到了一个博客链接,但具体内容没有给出,不过我们可以根据标题和...

    sql-map-2.dtd和sql-map-config-2.dtd

    引入sql-map-config-2.dtd后,开发者可以确保配置文件的语法正确,避免因格式错误导致的运行时问题。 在实际应用中,这两个DTD文件通常会被引用到对应的XML配置文件顶部,如下所示: ```xml <!DOCTYPE sqlMap ...

    flume-ng-sql-source-1.5.2.jar

    flume-ng-sql-source-1.5.2.jar从数据库中增量读取数据到hdfs中的jar包

    SQLPrompt-10.14.0.4064.exe 支持SSMS 19.1

    SQLPrompt-10.14.0.4064.exe 支持SSMS 19.1

    SQL解惑(中文版)

    根据提供的标题、描述以及部分上下文内容,我们可以推断出这本书《SQL解惑(中文版)》主要聚焦于SQL技能的提升与深化理解。虽然实际的内容并未给出具体示例或章节概述,但根据书名及简介,我们可以围绕SQL的基础...

    SQL解惑解惑

    SQL解惑解惑,意味着我们将深入探讨SQL的常见问题、概念以及解决策略。在这个过程中,我们不仅要理解SQL的基本语法,还要掌握如何有效地查询、更新和管理数据。 首先,让我们从SQL的基础开始。SQL分为四大主要部分...

    SQL解惑_pdf_againstccb_

    《SQL解惑(第2版)》是一本深入探讨SQL编程问题的专业书籍,旨在帮助读者解决在实际工作中遇到的各种SQL难题。SQL,全称为Structured Query Language,是用于管理和处理关系数据库的标准语言。这本书以问题为导向,...

    SQL解惑(第2版)

    根据提供的信息,“SQL解惑(第2版)”这本书主要聚焦于SQL语言的深入解析与实践应用,旨在帮助读者解决在数据库管理和查询过程中遇到的各种问题。虽然提供的内容部分没有包含具体的章节或知识点信息,但我们可以根据...

    azkaban-sql-script-2.5.0.tar.gz

    这个压缩包“azkaban-sql-script-2.5.0.tar.gz”包含的是Azkaban 2.5.0版本的SQL脚本,这些脚本可能用于在数据库中设置和配置Azkaban所需的表结构和权限。以下将详细介绍Azkaban的关键概念、功能以及与SQL脚本的关系...

    sql解惑.pdf

    根据提供的文件信息,此文档的标题是“sql解惑.pdf”,描述为“个人收集电子书,仅用学习使用,不可用于商业用途,如有版权问题,请联系删除!”,标签为“计算机 编程”,而部分内容实际上并未提供与SQL相关的有效...

    SQLAuto-main.zip

    SQLAuto-main支持快速生成大量测试数据,这些数据可以根据预设的规则进行随机生成,确保了测试的多样性,帮助发现潜在问题。 六、应用与实践 SQLAuto-main在软件开发的各个阶段都可发挥重要作用,如单元测试、集成...

    squirrel-sql-3.7(小松鼠-数据库连接工具).zip

    squirrel-sql-3.7(小松鼠-数据库连接工具).zipsquirrel-sql-3.7(小松鼠-数据库连接工具).zipsquirrel-sql-3.7(小松鼠-数据库连接工具).zipsquirrel-sql-3.7(小松鼠-数据库连接工具).zip

    sqltracker-beta-v0.08.rar

    SQL Tracker是一款专为ORACLE数据库设计的SQL执行跟踪工具,其beta版v0.08的发布,为数据库管理员提供了更精细的性能监控和问题排查手段。 SQL Tracker的核心功能在于它能实时跟踪并记录应用程序执行的SQL语句,这...

    SQL 92-ISO ANSI

    标题和描述中的“SQL 92-ISO ANSI”指的是1992年由国际标准化组织(ISO)和美国国家标准协会(ANSI)共同发布的SQL标准,全称为“SQL 1992-ISO ANSI”。这一标准是SQL语言发展史上的一个重要里程碑,它在前一版本SQL...

    【中文】【 SQL 解惑(第2版) 】【pdf】【73.63MB】

    【中文】【 SQL 解惑(第2版) 】【pdf】【73.63MB】,提供下载地址,经典的资料,书籍,绝对经典!

    sql-map-config-2.dtd

    sql-map-config-2.dtd ibats的dtd文件

    flume-ng-sql-source-1.4.3.jar

    flume连接数据库

    ruoyi-vue-pro sql

    各模块的sql

    SQL解惑系列

    SQL解惑系列,里面讲解了复杂的关联查询,不错啊。

Global site tag (gtag.js) - Google Analytics