`

查询SQL求解

阅读更多
建个测试表:
create table t_num(id integer,num number);
insert into t_num values(1,100);
insert into t_num values(2,90);
insert into t_num values(3,0);
insert into t_num values(4,10);
insert into t_num values(5,20);
insert into t_num values(6,50);
insert into t_num values(7,0);
insert into t_num values(8,10);
insert into t_num values(9,20);
commit;

表内容如下:
SQL> select * from t_num;
        ID        NUM
---------- ----------
         1        100
         2         90
         3          0
         4         10
         5         20
         6         50
         7          0
         8         10
         9         20

要求:记录按顺序显示,但只显示最后一个NUM为0记录后面的记录(不显示0记录)。
        ID        NUM
---------- ----------
         8         10
         9         20
这样的查询SQL该如何写。数据库为Oracle数据库。一般情况下记录不多。

想了一个办法,不太好,有没有人有更好的办法?
select id,num from (
    select id,num,
         sum(case when num=0 then 0 else 1 end) over(order by id desc rows between unbounded preceding and 0 following)
         - row_number() over (order by id desc) judge_code
    from t_num
) where judge_code=0 order by id
执行结果:
        ID        NUM
---------- ----------
         8         10
         9         20

2012-07-26
有热心人回答,谢谢,不错,很简单:
select *
  from t_num t
where t.id > (select max(id) from t_num tn where tn.num = 0);

想了一下,有个小问题。如果没有0记录时,会显示不出东西。假定id都大于0,可以加个nvl,即nvl(max(id),0)

============================================
今天又看了看我的实际情况,情况再变化一下,要求显示最后一个0后面所有数据及0上面一条数据(如果有的话),这个该如何写呢?注:ID不一定连续。

        ID        NUM
---------- ----------
         6         50
         7          0
         8         10
         9         20

想到了,可以用统计函数lead来解决。
select *
  from t_num t
where t.id >= (select nvl(max(id),0) from
             (select id,lead(num) over (order by id) num2,num from t_num) tn
              where tn.num2 = 0);
分享到:
评论

相关推荐

    excel规划求解,sql实现方法,在m个数据中找出合计值等于特定值的n个数据,亲测可用,速度超快,比excel快N倍

    excel规划求解sql实现方法,在m个数据中找出合计值等于特定值的n个数据,执行效率远远大于excel的效率,在excel几个小时无法求解但在ORACLE数据库(其他数据库同样可以)秒级执行完毕。适用多种数据库

    SQL嵌套查询

    数据库管理系统(DBMS)会先求解子查询,然后将结果用于构建父查询的查找条件。 ##### 2. 使用连接查询实现相同功能 ```sql SELECT S1.Sno, S1.Sname, S1.Sdept FROM Student S1, Student S2 WHERE S1.Sdept = S2....

    SQL的数据查询功能之四---子查询.

    子查询可以有多层嵌套,每层子查询在它的上一层查询处理之前被求解。子查询的结果作为其父查询的查找条件。值得注意的是,子查询的SELECT语句不允许使用ORDER BY子句,因为ORDER BY只能对最终查询结果进行排序。 1....

    PL_SQL在求解最短路径问题中的应用.pdf

    PL/SQL 在求解最短路径问题中的应用 本文介绍了一种基于 Oracle 的 PL/SQL 语言来解决最短路径问题的方法,该方法使用表、视图和存储过程来实现最短路径的计算。该方法的优点是可以解决复杂的有向图问题,且不需要...

    Sql 问题,时间顺序问题求解

    一个Sql难题,不知道如何解决。在论坛中发贴求解.

    人工智能大作业基于模拟退火算法的夏普比率求解python源码+sql数据库+详细注释(附带股票分析功能).zip

    【资源说明】人工智能大作业基于模拟退火算法的夏普比率求解python源码+sql数据库+详细注释(附带股票分析功能).zip人工智能大作业基于模拟退火算法的夏普比率求解python源码+sql数据库+详细注释(附带股票分析功能)....

    SQL面试(SQL面试的一些题目和答案)

    关于"小霸王"的求解问题,这是一个数字谜题,可以使用循环和条件判断来解决,但在SQL中并不常见。通常这类问题更适合编程语言如Python或Java。 最后,给定的数据片段要求查询每门课都大于80分的学生姓名,可以使用...

    自然语言生成多表SQL查询语句技术研究.pdf

    自然语言生成多表SQL查询语句技术研究是一项旨在解决多表SQL查询自动生成难题的先进技术。这项研究不仅对构建智能数据库查询系统至关重要,而且对于新型供电轨道交通系统混合时态大数据的个性化运维也具有重要意义。...

    sql试验报告sql的试验报告,一学期的实验报告都在里面。包括试验目的和截图,实验步骤,等等

    实验内容包括使用企业管理器观察pubs数据库的表属性,以及在查询分析器中声明并赋值二进制变量,最后通过编写T-SQL代码求解等差数列的和。这样的练习有助于学生熟悉SQL语句的编写,增强他们解决实际问题的能力。 ...

    多关系SQL查询中连接顺序的优化.pdf

    为了编写高效的SQL语句,程序员需要有高效的求解算法,并且SQL语句的语法要符合数据库优化器的语法优化原则。但是,即使满足这些要求,优化器有时也可能找不到较好的执行计划。优化器的结构和优化方法决定了它如何对...

    Oracle 数值求解优化算法

    用Oracle PL/SQL 语言开发的运筹学(最优化)算法.目前包括线性方程组求解,线性规划最优化求解等功能,经过了大量数据测试验证,附带详细使用说明,新功能正在继续开发调试之中,敬请各位使用并不吝赐教. A.运筹学算法...

    浅谈SQL查询功能的三个理论基础.pdf

    SQL查询功能是数据库管理系统(DBMS)的核心组成部分,其背后包含着三个重要的理论基础,分别是关系数据库的三级模式结构、关系代数和关系演算。本文将详细介绍这三大理论基础,并通过实例说明SQL查询是如何反映和...

    SQL Server中求素数

    SQL Server 2005是由微软开发的一款关系型数据库管理系统,它提供了丰富的功能和工具,帮助开发者管理数据、执行查询和创建复杂的数据库应用程序。SQL Server 2005支持T-SQL语言,这是一种用于管理和操作数据的标准...

    SQL之异曲同工审计查询技巧.pdf

    在这样的背景下,SQL提供了多种数据处理技巧,其中包括外连接(Left Outer Join和Right Outer Join)、集合运算(如交集、差集等)以及in、exists等查询技术。这些技术的灵活运用可以极大提高审计效率和效果,它们是...

    SQL经典面试题SQL经典面试题SQL经典面试题

    数学问题的SQL求解 - **题目**:有一个有趣的数学问题:“小小+霸霸+王王=小霸王”,要求找出每个字符对应的数字值。 - **SQL 语句**: ```sql DECLARE @data INT, @i INT, @j INT, @l INT; SET @data = 100; ...

    数据库中sql语句的课件

    SQL(Structured Query Language),结构化查询语言,是用于管理和处理数据库的标准语言。本课件深入浅出地介绍了SQL的基础知识,包括数据的增删改查(CRUD)操作以及数据库表的定义和结构修改。 1. **增加(Create...

    基于SQL的图相似性查询方法.pdf

    实验基于PubChem数据集进行,对比了算法在求解查询结果的时间消耗,结果表明该方法在性能上优于现有的其他算法。 关键词中的“图编辑距离”是指在两个图之间通过一系列编辑操作(如增加、删除节点或边)来使一个图...

    Cosette:Cosette是一个自动化SQL求解器

    Cosette是一种语言,并且是推理SQL对等项的自动求解器。 阅读 请参阅以了解如何使用珂赛特 尝试Cosette 查看cosette以获取有关Cosette的研究论文 该项目正在积极开发中。 向我们发送消息( ),或者如果发现不起...

    求解一个问题

    然后,编写SQL查询语句,通过Java代码执行这些查询以找到匹配用户搜索条件的书籍。 图形定位则可能涉及到地理信息系统(GIS)或地图API。在Java中,Google Maps API和OpenStreetMap的Java库(如JOSM)是常见的选择...

    SQL 基础综合大全

    #### 一、数值求解与SQL结合 在SQL中实现数学问题的求解,特别是涉及到复杂方程时,通常不是直接的功能。然而,可以通过存储过程或者用户定义函数来实现这样的计算。例如,在提供的部分代码中展示了一个通过二分法...

Global site tag (gtag.js) - Google Analytics