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

用SQL写的一个24点运算

阅读更多
with  test as (select rownum id, regexp_substr('1,2,3,4', '[^,]+',1,rownum) n from dual connect by rownum < 5)    
select  case when     end_out1=24  then '('||'('||n1||f1||n2||')'||f2||n3||')'||f3||n4||'='||'24'  
             when     end_out2=24  then '('||n1||f1||n2||')'||f3||'('||n3||f2||n4||')'||'='||'24'  
             when     end_out3=24  then n1||f3||'('||'('||n2||f1||n3||')'||f2||n4||')'||'='||'24'  
             end     
                        
from    
     ( select x2.*,d.n n4,f3,   
             decode(f3, '+', c123 + d.n, '-', c123 - d.n, '*', c123 * d.n, '/', c123 / d.n) end_out1,   
             decode(f3, '+', c12 + decode(f2, '+', n3 + d.n, '-', n3 - d.n, '*', n3 * d.n, '/', n3 / d.n),    
                        '-', c12 - decode(f2, '+', n3 + d.n, '-', n3 - d.n, '*', n3 * d.n, '/', n3 / d.n),    
                        '*', c12 * decode(f2, '+', n3 + d.n, '-', n3 - d.n, '*', n3 * d.n, '/', n3 / d.n),    
                        '/', c12 / decode(f2, '+', n3 + d.n, '-', decode(n3,d.n,null,n3-d.n), '*', n3 * d.n, '/', n3 / d.n) ) end_out2,   
             decode(f3, '+', n1 + decode(f2, '+', c23 + d.n, '-', c23 - d.n, '*', c23 * d.n, '/', c23 / d.n),    
                        '-', n1 - decode(f2, '+', c23 + d.n, '-', c23 - d.n, '*', c23 * d.n, '/', c23 / d.n),    
                        '*', n1 * decode(f2, '+', c23 + d.n, '-', c23 - d.n, '*', c23 * d.n, '/', c23 / d.n),    
                        '/', n1 / decode(f2, '+', decode(c23,-1*d.n,null,c23+d.n),    
                                             '-', decode(c23,d.n,null,c23-d.n),    
                                             '*', decode(c23,0,null,c23 * d.n),    
                                             '/', decode(c23,0,null,c23 / d.n) )) end_out3   
      from (select id1,id2,c.id id3,   
                   x1.n1,x1.n2,c.n n3,   
                   f1,f2,x1.c12,   
                   decode(f2, '+', c12+ c.n, '-', c12 - c.n, '*', c12 * c.n, '/', c12 / c.n) c123,   
                   decode(f1, '+', n2+ c.n,'-', n2- c.n, '*', n2* c.n, '/', n2 / c.n) c23   
            from (select a.id id1,b.id id2,   
                         a.n  n1, b.n n2,    
                         f1,    
                         decode(f1, '+', a.n + b.n, '-', a.n - b.n, '*', a.n * b.n, '/', a.n / b.n) c12   
                    from test a,   
                         test b,   
                         (select substr('+-*/', rownum, 1) f1  from dual connect by rownum < 5) x   
                   where a.id <> b.id)            x1,   
                 test c,   
                 (select substr('+-*/', rownum, 1) f2 from dual connect by rownum < 5) x   
            where x1.id1 <> c.id   
             and x1.id2 <> c.id)x2,   
            test d,   
            (select substr('+-*/', rownum, 1) f3 from dual connect by rownum < 5) x   
       where id1<>d.id and   id2<>d.id  and   id3<>d.id ) x3   
where end_out1=24   
    or end_out2=24   
    or end_out3=24  
分享到:
评论

相关推荐

    SQL语言中差运算与除运算实现的几种方法.pdf

    除运算在SQL中不能直接实现,但可以通过基本的SQL运算组合来模拟除运算。具体实现方法包括使用NOT EXISTS谓词、使用自连接以及使用嵌套查询等。例如,要找出选修了2号课程和5号课程的学生学号,可以使用如下SQL语句...

    sqlserver集合运算.sql

    Microsoft SQL Server 2008技术内幕:T-SQL语言基础(集合运算)练习sql文件

    sql学习 哪些SQL存在列运算.sql

    sql学习 哪些SQL存在列运算.sql

    2022年SQL合并查询Union并集运算.pptx

    SQL Union 并集运算是一个基本的数据库操作,用于将两个或多个 SELECT 语句的结果结合在一起,生成一个新的结果集。在本文中,我们将详细介绍 SQL Union 并集运算的基本概念、语法、使用场景和实践案例。 一、SQL ...

    SQLServer中如何将一个字段的多个记录值合在一行显示

    SQLServer 中将一个字段的多个记录值合并到一行显示的实现方法 SQL Server 是一种关系型数据库管理系统,具有强大的数据处理能力和存储能力。在实际应用中,我们经常需要将一个字段的多个记录值合并到一行显示,以...

    关系代数运算与SQL查询的对应关系

    差集运算用于找出属于一个关系但不属于另一个关系的所有记录。在SQL中,这可以通过`EXCEPT`操作实现: ```sql SELECT * FROM R EXCEPT SELECT * FROM S; ``` #### 3. 交集(Intersection) 交集运算的结果是两个...

    SQL Server环境下交与差运算的设计与实现.pdf

    在SQL Server 2005版本中,实现差运算的核心是找到只存在于一个关系中的元组。由于SQL Server不直接支持INTERSECT和MINUS关键字,因此需要通过其他SQL语句构造方法来实现这两种运算。 实例设计与实现部分会给出具体...

    用友U8 MRP运算存储过程.sql

    用友U8 MRP运算存储过程

    sql2000-2005-2012错位运算

    列举sql2000-2005-2012错位运算 3种不同方法

    高职学院数据库原理教学探讨——如何用SQL语句实现关系代数的运算.pdf

    在SQL中,这可以通过EXCEPT语句来实现,即从第一个关系中减去第二个关系中也存在的元组,保留不重复的元组。 第五,笛卡尔积(×)运算是生成两个关系所有可能元组组合的运算。在SQL中,笛卡尔积可以通过没有指定...

    关系代数中“除法”运算与SQL中带有exists子查询的对比教学.pdf

    在SQL数据库查询语言中,与除法运算相对应的是一种特殊的子查询,即使用exists关键字的子查询。这篇文档探讨了如何通过对比教学法,将关系代数中的除法运算与SQL中的exists子查询相结合,帮助学生更深入地理解这两种...

    数据库开发 Oracle数据库 SQL开发教程 第08章 集合运算(共20页).pdf

    相减运算返回在第一个查询中存在但在第二个查询中不存在的行,同样是非ANSI SQL-99兼容的Oracle特性。示例: ```sql SELECT column_list FROM table1 MINUS SELECT column_list FROM table2; ``` 在学习集合...

    关系代数中交运算与差运算的SQL语句实现.pdf

    差运算(Difference)是指第一个关系中不在第二个关系中的元组,记作R - S = {t | t ∈ R ∧ t ∉ S}。在SQL中,实现差运算可以使用两种方法:利用差运算的定义和利用not in谓词。 第一种方法是利用差运算的定义,...

    SQL练习题中的集合运算实例详解及应用场景

    内容概要:本文档提供了一系列基于特定数据表的SQL集合运算练习题目及其解决方案,涵盖了集合运算法如交集、并集以及差集的实际应用实例。这些实例包括检索特定系别学生的信息、找出未被选修的课程号、查询参与某两...

    运用SQL语句对类进行逻辑运算源码

    1、以SQL字符串的形式对类的对象进行逻辑运算,确定某个对象是否满足字符串所定义的条件 2、主要内容包括: a.SQL语句解析,即根据字符串构建树 b.利用反射获取对象值,然后遍历树获取逻辑运算结果

    SQL SERVER 字符集问题之一解决

    在使用 SQL SERVER 时,字符集问题是一个常见的问题之一。在本文中,我们将讨论 SQL SERVER 字符集问题之一解决方案,解决 equal to 运算中 "Chinese_PRC_CI_AS" 和 "Chinese_PRC_CS_AS" 之间的排序规则冲突。 一、...

    21天迅速学会sql(比较完整的sql学习手册)

    - **使用视图**:视图可以看作是一个虚拟表,它保存了SQL查询的结果,便于简化复杂的查询操作。 - **列的重命名**:通过AS关键字重命名视图中的列名,使其更具可读性。 - **SQL对视图的处理过程**:解释了SQL引擎...

    2022年SQL合并查询Intersect交集运算.pptx

    以下是一个使用Intersect运算符合并两个表的示例: ``` SELECT * FROM orders INTERSECT SELECT * FROM sales; ``` 这个示例将合并orders表和sales表,返回两个表之间的公共记录。 其他集合运算符 除了Intersect...

    关于关系代数运算与SQL语句的等价实现的分析与研究.pdf

    差运算用于找出属于一个关系但不属于另一个关系的元组。在SQL中,可以使用EXCEPT关键字实现: ```sql SELECT * FROM R EXCEPT SELECT * FROM S ``` 或者使用NOT IN子查询: ```sql SELECT * FROM R WHERE NOT EXISTS...

Global site tag (gtag.js) - Google Analytics