`
datamachine
  • 浏览: 164244 次
社区版块
存档分类
最新评论

简化SQL计算之打乱数据列次序(Shuffle)

    博客分类:
  • DB
阅读更多

        REF_VALUES是数据库表,ID是主键,ORIGINAL_VALUE是源列,将ORIGINAL_VALUE打乱次序后要更新到空列SHUFFLED_VALUE。部分数据如下:



 

        SQL

         不同的数据库写法不同,以Oracle为例:

create or replace procedure shuffle as
TYPE My_CurType IS REF CURSOR; 
CUR_1 My_CurType;
V_id NUMBER(10,0);
V_result varchar2(20);
v_sql varchar2(2000);
begin
  OPEN CUR_1 FOR  select t1.id,t2.result from (
        select rownum rn,id,ORIGINAL_VALUE from REF_VALUES order by ORIGINAL_VALUE) t1
    join(
        select rownum rn,result from(
            select ORIGINAL_VALUE result from REF_VALUES order by dbms_random.value()))t2
    on t2.rn=t1.rn;
  LOOP
    fetch CUR_1 INTO V_id,V_result ; 
       EXIT WHEN CUR_1%NOTFOUND; 
    v_sql:='update REF_VALUES set SHUFFLED_VALUE='''||V_result||''' where id='||V_id;
    EXECUTE immediate v_sql;  
  END LOOP;
  CLOSE  CUR_1;
end shuffle;

 

   计算出打乱次序的结果就需要多层嵌套子查询(前半部分),要再更新到表中还需要用游标(或者用临时表)及存储过程,整个代码非常繁琐。

 

   使用集算器可以避免复杂的嵌套子查询,且可通用于各种数据库,代码如下:



 

        A1:执行SQL,取得列idORIGINAL_VALUE

        A2:打乱A1的次序。

          A3:A1中的id列和A2中的ORIGINAL列拼成一个二维表。计算结果如下:



 

        A4:用A3更新表REF_VALUES。选项@u表示只生成更新语句。更新后REF_VALUES如下:



 

  • 大小: 10.7 KB
  • 大小: 28.5 KB
  • 大小: 11.7 KB
  • 大小: 21.4 KB
0
0
分享到:
评论

相关推荐

    SQL实现两张无关联表的数据列合并在一张结果集中

    ### SQL实现两张无关联表的数据列合并在一张结果集中 #### 实现思路及技术要点解析 在实际工作中,我们经常会遇到需要将两张无关联表的数据列合并到一个结果集中的需求。这种操作可以帮助我们更好地组织数据,使得...

    使用sql语句查询的数据按时间递增累加

    目标是使用SQL语句计算出每个源ID (`ܺķ`) 在不同时期的累计预计值 (`ۼԤ`),即从最早的时间点开始到当前时间点的所有预计值之和。 #### 2.2 SQL实现 接下来,我们将展示具体的SQL查询语句,以实现上述目标: ``...

    ACCESS和SQL批量插入数据工具

    ACCESS是Microsoft Office套件中的一个关系型数据库管理系统,基于Structured Query Language (SQL)的简化版本,适合小型企业和个人用户存储和管理数据。尽管它的SQL功能相对较弱,但处理日常数据录入和查询任务绰绰...

    labview写入数据到sql server2005

    在“labview写入数据到sql server2005”的场景中,LabVIEW被用来作为数据处理和控制工具,与SQL Server 2005数据库进行交互,实现数据的写入操作。SQL Server 2005是微软公司的关系型数据库管理系统,它提供了数据...

    在sql中对两列数据进行运算作为新的列操作

    在SQL中,对两列数据进行运算以生成新的列是一项常见的操作,这允许我们根据现有数据创建新的计算字段。在数据库查询中,这种操作能够帮助分析数据,进行复杂的计算,或者构建更适合用户需求的报告。以下是一些关于...

    SQL Server表数据导出成Insert语句的工具

    在SQL Server数据库管理中,有时我们需要将表中的数据导出为Insert语句,这在数据迁移、备份或测试环境中非常常见。"SQL Server表数据导出成Insert语句的工具"是一个专门为此目的设计的应用程序,它能帮助数据库管理...

    SQLSERVER数据结构对比

    它可以提供安全访问数据的机制,也可以简化复杂的查询逻辑。 3. 存储过程:存储过程是一组预先编译的SQL语句,可以封装在数据库中并按需调用。它们提高了代码的重用性,降低了网络通信量,并可以实现更复杂的业务...

    Excel VBA+SQL 数据管理与应用模板开发.rar

    在Excel VBA(Visual Basic for Applications)和SQL(Structured Query Language)的结合使用中,我们可以创建高效、自动化的数据管理与应用模板。这样的模板对于处理大量数据和执行复杂的计算任务非常有用,尤其在...

    海量数据优化查询SQL

    在IT领域,尤其是在大数据时代,优化SQL查询对于处理海量数据至关重要。SQL是Structured Query Language的缩写,是用于管理和操作数据库的语言。面对动辄上百万甚至上千万条记录的数据库,传统的查询方式可能会导致...

    SQL数据生成器

    1. **数据库概念**:SQL数据生成器工作于关系型数据库管理系统(RDBMS)之上,如MySQL、Oracle、Microsoft SQL Server(mssql,对应压缩包中的“mssql数据生成器.exe”可能就是针对MS SQL Server的版本)。...

    最新淘宝商品类目数据.sql

    近日,一份名为“最新淘宝商品类目数据.sql”的文件引起业界广泛关注,该文件包含淘宝平台最新商品分类信息,为电商从业者提供了一个高效便捷的数据获取渠道。 淘宝商品类目是电商业务的核心组成部分,它将各类商品...

    使用 SQL 简化 ETL 管道:数据处理的三个技巧

    好处是显而易见的:简化工作流程:无需在 SQL、Python 或 JavaScript 之间传输数据以进行数据质量检查。缩短周期时间:使用管道中基于 SQL 的数据监控仪表板来识别潜在的数据问题。简化管道维护:将用户数据(CSV 或...

    spark sql 数据倾斜 - 处理篇.pdf

    Spark SQL数据倾斜处理 在处理大数据时,Spark SQL是一种强大的工具,但数据倾斜是Spark SQL用户经常遇到的问题。数据倾斜是指在并行计算中,一部分节点比其他节点处理的数据量多得多,从而导致资源使用不均和性能...

    sqlserver导出数据字典为excel或word

    在SQL Server数据库管理中,数据字典是一个非常重要的概念,它包含了关于数据库中所有对象的信息,如表、视图、存储过程、索引等。在实际工作中,有时我们需要将这些信息导出为Excel或Word文档,以便于分析、报告...

    sql确定两个日期之间的月份数或年数

    通过上述不同数据库系统中的示例可以看出,虽然不同的数据库提供了不同的内置函数来简化计算过程,但其核心思想都是相同的:即先找到两个日期,然后根据这两个日期计算出它们之间的年数和月数差异。在实际应用中,...

    sqlserver自动生成sql语句工具sqlserver转oracle

    在企业级应用中,有时需要在不同的数据库系统间进行数据迁移或兼容性处理,这就涉及到了SQL Server到Oracle的数据转换。本篇文章将详细探讨如何利用工具实现SQL Server自动生成SQL语句并转换到Oracle。 首先,标题...

    应用SQL语言进行数据查询与统计.pdf

    "应用SQL语言进行数据查询与统计" 本文档主要介绍了如何使用SQL语言...使用SQL语言进行数据查询和统计是非常有必要的,统计人员可以使用SQL语言来直接访问数据库,进行数据查询和统计,从而大大简化了数据的统计工作。

    sql2005自动生成带数据的 数据库脚本

    在SQL Server 2005中,生成带数据的数据库脚本是一项常用的任务,它有助于备份数据库结构和数据,便于迁移、恢复或者在测试环境中重建数据。以下将详细讲解如何在SQL Server 2005中自动生成带数据的数据库脚本。 一...

    SQL 语法 SQL 总结 SQL教程

    SQL 数据类型 SQL 服务器 SQL 函数 SQL functions SQL avg() SQL count() SQL first() SQL last() SQL max() SQL min() SQL sum() SQL Group By SQL Having SQL ucase() SQL lcase() SQL mid() SQL ...

    数据库表数据转为insert sql语句

    Data row to insert sql是一个小的工具软件,可以将数据库表中指定数据转换成相应的insert sql语句。目前支持的数据库类型为oracle,db2,ms sql server。 目前还有一些缺陷,还有待完善,具体如下: 1、对ms sql ...

Global site tag (gtag.js) - Google Analytics