oracle 普通业务数据统计sql

-- 字符串分割示例
SELECT REGEXP_SUBSTR(‘17,20,23‘, ‘[^,]+‘, 1, LEVEL, ‘i‘) AS STR
  FROM DUAL  CONNECT BY LEVEL <=  LENGTH(‘17,20,23‘) - LENGTH(REGEXP_REPLACE(‘17,20,23‘, ‘,‘, ‘‘))+1;

CREATE TABLE tm_change(
     ID NUMBER,
     transit_zno VARCHAR2(10),
     src VARCHAR2(100),
     des VARCHAR2(100)
);

CREATE TABLE temp_tm_change(
     ID NUMBER,
     transit_zno VARCHAR2(10),
     src VARCHAR2(100),
     des VARCHAR2(100)
);

-- 原数据
SELECT t.*,ROWID FROM tm_change t;
--输出数据
SELECT t.* FROM temp_tm_change t;

DELETE FROM temp_tm_change;
COMMIT;

DECLARE
  recordCount NUMBER;-- 一条记录衍生的记录条数
  sumCount NUMBER; --总条数
BEGIN
  sumCount := 0;
  -- sum
  FOR rs IN (SELECT id,transit_zno ,src,des FROM tm_change) LOOP
      recordCount := 0;
       --src
       FOR srcRS IN (SELECT REGEXP_SUBSTR(rs.src, ‘[^,]+‘, 1, LEVEL, ‘i‘) AS str
           FROM DUAL  CONNECT BY LEVEL <=  LENGTH(rs.src) - LENGTH(REGEXP_REPLACE(rs.src, ‘,‘, ‘‘))+1) LOOP
        -- des
         FOR desRS IN (SELECT REGEXP_SUBSTR(rs.des, ‘[^,]+‘, 1, LEVEL, ‘i‘) AS str
             FROM DUAL  CONNECT BY LEVEL <=  LENGTH(rs.des) - LENGTH(REGEXP_REPLACE(rs.des, ‘,‘, ‘‘))+1) LOOP
             recordCount := recordCount + 1;
             sumCount := sumCount + 1;
             INSERT INTO temp_tm_change(ID,transit_zno,src,des) VALUES (rs.id,rs.transit_zno,srcRs.str,desRS.str);
             COMMIT;
         END LOOP;
       END LOOP;
       --dbms_output.put_line(‘insert a record : id ->‘ || rs.id || ‘  recordCount --> ‘ || recordCount ); buffer overflow
  END LOOP;
  --dbms_output.put_line(‘create  record  sumCount --> ‘ || sumCount );
END;

SELECT transit_zno,src,des FROM temp_tm_change GROUP BY transit_zno,src,des HAVING COUNT(*) > 1 ;
时间: 2024-08-09 21:47:49

oracle 普通业务数据统计sql的相关文章

常用的数据统计Sql 总结(转)

转:http://www.cnblogs.com/zhangweizhong/p/5577842.html 最近刚在搞一个BI的项目,里面需要大量的sql 数据统计相关运用,加深了我又对SQL的理解与使用. 所以,分享几个数据统计时常用的sql 语句总结: 1. 统计各个条件下的数据 select BatchId,sum(CardSum) 总金额, sum(case when Status=1 then CardSum else 0 end) as 已使用, sum(case when Stat

常用的数据统计Sql 总结

最近刚在搞一个BI的项目,里面需要大量的sql 数据统计相关运用,加深了我又对SQL的理解与使用. 所以,分享几个数据统计时常用的sql 语句总结: 1. 统计各个条件下的数据 select BatchId,sum(CardSum) 总金额, sum(case when Status=1 then CardSum else 0 end) as 已使用, sum(case when Status=2 then CardSum else 0 end) as 已冻结 from GiftCard gro

oracle 3个实用统计sql场景

我们使用oracle做一些统计的时候,时常碰到如下场景: 1.竖列转横列 2.分组并合并某列作为结果集 3.分组排序取首条记录 我们使用一个简化的业务场景,来展示这三个场景如何使用sql来解决. 业务场景:一张表记录着员工的出勤记录 业务需求:(对应上面的三个场景) 1.统计员工某年的每月出勤记录数 2.查询每个人的出勤记录 3.获得每个员工第一天上班的出勤记录 首先我们先创建测试数据表和测试数据 Sql代码   --创建考勤记录表 CREATE TABLE T_ATTENDANCE_LOG (

银行储蓄管理系统---Oracle数据库表数据---Bank_Oracle_Data.sql

prompt PL/SQL Developer import file prompt Created on 2017年6月4日 by Johnny set feedback off set define off prompt Disabling triggers for ACCOUNT... alter table ACCOUNT disable all triggers; prompt Disabling triggers for CLOSING_INSURANCE... alter tabl

数据统计SQL备忘

1.统计9月注册角色首次充值时的游戏时长分布(分钟,人数),单位:分钟 SELECT sub.minutes,        Count(roleId) AS count FROM   (SELECT pr.roleId,                Timestampdiff(MINUTE, Max(player_login.logTime), pr.logTime)                + Ifnull(Max(player_logout.totalOnlineMins), 0)

从SQL Server数据库转到Oracle数据库的数据脚本处理

在我们很多情况下的开发,为了方便或者通用性的考虑,都首先考虑SQL Server数据库进行开发,但有时候客户的生产环境是Oracle或者其他数据库,那么我们就需要把对应的数据结构和数据脚本转换为对应的数据库,数据结构一般来说,语法都遵循了SQL92的标准,或者我们根据不同的PowerDesigner文件进行生成对应的结构脚本即可,但是实际数据的脚本我们就需要进行一定的处理,以及文本的替换处理了,本文结合Notepad++的文本正则表达式替换,实现一些如日期较为特殊的数据脚本调整,把它从SQL S

Oracle EBS-SQL (PO-16):检查采购订单完成情况统计.sql

select         e.FULL_NAME                                                     采购员,         sum(plla.quantity-plla.QUANTITY_CANCELLED)  订购数量,         sum(plla.Quantity_Received)                           完成数量 ,         round(SUM(plla.Quantity_Receive

一个统计以往数据的SQL。

今天有一位朋友发了这么个场景:一个商店的收入记录表,每天都有记录: 日期 每天收入 07/11 100 07/12 102 07/13 103 07/14 101 现在做一个统计,用户希望看到自已的收入统计 日期 每天收入 07/11 100 07/12 202 07/13 305 07/14 406 CREATE TABLE IF NOT EXISTS `income` ( `id` int(11) NOT NULL, `idate` date DEFAULT NULL, `money` in

Oracle导数据到SQL server的方法总结

通过oracle10g 访问sql server 2008 导数据步骤 最近在项目中遇到要将Oracle数据库的数据导入到SQL server数据库中,解决办法如下: 一.准备工作 配置Oracle 客户端(TNS 监听)tnsnames.ora 文件,其中需要注意文件中的数据库别名"ORADB",确保主机可以通过SQLPlus 访问远程Oracle 数据库.示例如下: ORADB= (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST =HO