您的位置:首页 > 数据库 > Oracle

oracle 分析函数完成号码区段的统计(连续的,不连续的加一条记录)

2014-12-24 13:35 477 查看
建表语句:

CREATE TABLE "DY"."TB_MEMCARDINFO" (
"MEMCARDINFO_ID" NUMBER NOT NULL ,
"VIPCLASS_ID" NUMBER NULL ,
"VIPCODE" VARCHAR2(20 BYTE) NULL ,
"CARDSTATUS" VARCHAR2(2 BYTE) NULL ,
"CREATE_USER" VARCHAR2(12 BYTE) NULL ,
"USER_GROUP" VARCHAR2(12 BYTE) NULL ,
"CREATE_DATE" DATE NULL ,
"MODIFIER" VARCHAR2(12 BYTE) NULL ,
"MODI_DATE" DATE NULL ,
"FLAG" NUMBER(1) NULL ,
"JOINTYPE" VARCHAR2(2 BYTE) NULL ,
"INMALL_ID" NUMBER NULL
)


这是一张会员卡信息表

下面插入部分数据:

INSERT INTO "DY"."TB_MEMCARDINFO" VALUES ('1593478', '37', '166666981', '0', 'jiangf03', '01', TO_DATE('2014-12-23 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), 'jiangf03', TO_DATE('2014-12-23 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), '0', '0', '24');
INSERT INTO "DY"."TB_MEMCARDINFO" VALUES ('1593479', '37', '166666982', '0', 'jiangf03', '01', TO_DATE('2014-12-23 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), 'jiangf03', TO_DATE('2014-12-23 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), '0', '0', '24');
INSERT INTO "DY"."TB_MEMCARDINFO" VALUES ('1593480', '37', '166666983', '0', 'jiangf03', '01', TO_DATE('2014-12-23 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), 'jiangf03', TO_DATE('2014-12-23 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), '0', '0', '24');
INSERT INTO "DY"."TB_MEMCARDINFO" VALUES ('1593481', '37', '166666984', '0', 'jiangf03', '01', TO_DATE('2014-12-23 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), 'jiangf03', TO_DATE('2014-12-23 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), '0', '0', '24');
INSERT INTO "DY"."TB_MEMCARDINFO" VALUES ('1593482', '37', '166666985', '0', 'jiangf03', '01', TO_DATE('2014-12-23 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), 'jiangf03', TO_DATE('2014-12-23 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), '0', '0', '24');
INSERT INTO "DY"."TB_MEMCARDINFO" VALUES ('1593483', '37', '166666986', '0', 'jiangf03', '01', TO_DATE('2014-12-23 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), 'jiangf03', TO_DATE('2014-12-23 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), '0', '0', '24');
INSERT INTO "DY"."TB_MEMCARDINFO" VALUES ('1593484', '37', '166666987', '0', 'jiangf03', '01', TO_DATE('2014-12-23 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), 'jiangf03', TO_DATE('2014-12-23 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), '0', '0', '24');
INSERT INTO "DY"."TB_MEMCARDINFO" VALUES ('1593485', '37', '166666988', '0', 'jiangf03', '01', TO_DATE('2014-12-23 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), 'jiangf03', TO_DATE('2014-12-23 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), '0', '0', '24');
INSERT INTO "DY"."TB_MEMCARDINFO" VALUES ('1593486', '37', '166666989', '0', 'jiangf03', '01', TO_DATE('2014-12-23 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), 'jiangf03', TO_DATE('2014-12-23 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), '0', '0', '24');
INSERT INTO "DY"."TB_MEMCARDINFO" VALUES ('1593487', '37', '166666990', '0', 'jiangf03', '01', TO_DATE('2014-12-23 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), 'jiangf03', TO_DATE('2014-12-23 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), '0', '0', '24');
INSERT INTO "DY"."TB_MEMCARDINFO" VALUES ('1593488', '37', '166666991', '0', 'jiangf03', '01', TO_DATE('2014-12-23 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), 'jiangf03', TO_DATE('2014-12-23 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), '0', '0', '24');
INSERT INTO "DY"."TB_MEMCARDINFO" VALUES ('1593489', '37', '166666992', '0', 'jiangf03', '01', TO_DATE('2014-12-23 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), 'jiangf03', TO_DATE('2014-12-23 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), '0', '0', '24');
INSERT INTO "DY"."TB_MEMCARDINFO" VALUES ('1593490', '37', '166666993', '0', 'jiangf03', '01', TO_DATE('2014-12-23 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), 'jiangf03', TO_DATE('2014-12-23 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), '0', '0', '24');
INSERT INTO "DY"."TB_MEMCARDINFO" VALUES ('1593491', '37', '166666994', '0', 'jiangf03', '01', TO_DATE('2014-12-23 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), 'jiangf03', TO_DATE('2014-12-23 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), '0', '0', '24');
INSERT INTO "DY"."TB_MEMCARDINFO" VALUES ('1593492', '37', '166666995', '0', 'jiangf03', '01', TO_DATE('2014-12-23 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), 'jiangf03', TO_DATE('2014-12-23 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), '0', '0', '24');
INSERT INTO "DY"."TB_MEMCARDINFO" VALUES ('1593493', '37', '166666996', '0', 'jiangf03', '01', TO_DATE('2014-12-23 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), 'jiangf03', TO_DATE('2014-12-23 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), '0', '0', '24');
INSERT INTO "DY"."TB_MEMCARDINFO" VALUES ('1593494', '37', '166666997', '0', 'jiangf03', '01', TO_DATE('2014-12-23 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), 'jiangf03', TO_DATE('2014-12-23 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), '0', '0', '24');
INSERT INTO "DY"."TB_MEMCARDINFO" VALUES ('1593495', '37', '166666998', '0', 'jiangf03', '01', TO_DATE('2014-12-23 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), 'jiangf03', TO_DATE('2014-12-23 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), '0', '0', '24');
INSERT INTO "DY"."TB_MEMCARDINFO" VALUES ('1593496', '37', '166666999', '0', 'jiangf03', '01', TO_DATE('2014-12-23 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), 'jiangf03', TO_DATE('2014-12-23 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), '0', '0', '24');
INSERT INTO "DY"."TB_MEMCARDINFO" VALUES ('1592916', '38', '200000419', '0', 'dxd004', '01', TO_DATE('2014-12-23 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), 'dxd004', TO_DATE('2014-12-23 15:12:40', 'YYYY-MM-DD HH24:MI:SS'), '0', '0', '238');
INSERT INTO "DY"."TB_MEMCARDINFO" VALUES ('1592917', '38', '200000420', '0', 'dxd004', '01', TO_DATE('2014-12-23 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), 'dxd004', TO_DATE('2014-12-23 15:12:40', 'YYYY-MM-DD HH24:MI:SS'), '0', '0', '238');
INSERT INTO "DY"."TB_MEMCARDINFO" VALUES ('1592918', '38', '200000421', '0', 'dxd004', '01', TO_DATE('2014-12-23 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), 'dxd004', TO_DATE('2014-12-23 15:12:40', 'YYYY-MM-DD HH24:MI:SS'), '0', '0', '238');
INSERT INTO "DY"."TB_MEMCARDINFO" VALUES ('1592919', '38', '200000422', '0', 'dxd004', '01', TO_DATE('2014-12-23 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), 'dxd004', TO_DATE('2014-12-23 15:12:40', 'YYYY-MM-DD HH24:MI:SS'), '0', '0', '238');
INSERT INTO "DY"."TB_MEMCARDINFO" VALUES ('1592920', '38', '200000423', '0', 'dxd004', '01', TO_DATE('2014-12-23 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), 'dxd004', TO_DATE('2014-12-23 15:12:40', 'YYYY-MM-DD HH24:MI:SS'), '0', '0', '238');
INSERT INTO "DY"."TB_MEMCARDINFO" VALUES ('1592921', '38', '200000424', '0', 'dxd004', '01', TO_DATE('2014-12-23 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), 'dxd004', TO_DATE('2014-12-23 15:12:40', 'YYYY-MM-DD HH24:MI:SS'), '0', '0', '238');
INSERT INTO "DY"."TB_MEMCARDINFO" VALUES ('1592922', '38', '200000425', '0', 'dxd004', '01', TO_DATE('2014-12-23 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), 'dxd004', TO_DATE('2014-12-23 15:12:40', 'YYYY-MM-DD HH24:MI:SS'), '0', '0', '238');
INSERT INTO "DY"."TB_MEMCARDINFO" VALUES ('1592923', '38', '200000426', '0', 'dxd004', '01', TO_DATE('2014-12-23 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), 'dxd004', TO_DATE('2014-12-23 15:12:40', 'YYYY-MM-DD HH24:MI:SS'), '0', '0', '238');
INSERT INTO "DY"."TB_MEMCARDINFO" VALUES ('1592924', '38', '200000427', '0', 'dxd004', '01', TO_DATE('2014-12-23 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), 'dxd004', TO_DATE('2014-12-23 15:12:40', 'YYYY-MM-DD HH24:MI:SS'), '0', '0', '238');
INSERT INTO "DY"."TB_MEMCARDINFO" VALUES ('1592925', '38', '200000428', '0', 'dxd004', '01', TO_DATE('2014-12-23 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), 'dxd004', TO_DATE('2014-12-23 15:12:40', 'YYYY-MM-DD HH24:MI:SS'), '0', '0', '238');
INSERT INTO "DY"."TB_MEMCARDINFO" VALUES ('1592926', '38', '200000429', '0', 'dxd004', '01', TO_DATE('2014-12-23 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), 'dxd004', TO_DATE('2014-12-23 15:12:40', 'YYYY-MM-DD HH24:MI:SS'), '0', '0', '238');
INSERT INTO "DY"."TB_MEMCARDINFO" VALUES ('1592927', '38', '200000430', '0', 'dxd004', '01', TO_DATE('2014-12-23 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), 'dxd004', TO_DATE('2014-12-23 15:12:40', 'YYYY-MM-DD HH24:MI:SS'), '0', '0', '238');
INSERT INTO "DY"."TB_MEMCARDINFO" VALUES ('1592928', '38', '200000431', '0', 'dxd004', '01', TO_DATE('2014-12-23 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), 'dxd004', TO_DATE('2014-12-23 15:12:40', 'YYYY-MM-DD HH24:MI:SS'), '0', '0', '238');
INSERT INTO "DY"."TB_MEMCARDINFO" VALUES ('1592929', '38', '200000432', '0', 'dxd004', '01', TO_DATE('2014-12-23 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), 'dxd004', TO_DATE('2014-12-23 15:12:40', 'YYYY-MM-DD HH24:MI:SS'), '0', '0', '238');
INSERT INTO "DY"."TB_MEMCARDINFO" VALUES ('1592930', '38', '200000433', '0', 'dxd004', '01', TO_DATE('2014-12-23 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), 'dxd004', TO_DATE('2014-12-23 15:12:40', 'YYYY-MM-DD HH24:MI:SS'), '0', '0', '238');
INSERT INTO "DY"."TB_MEMCARDINFO" VALUES ('1592931', '38', '200000434', '0', 'dxd004', '01', TO_DATE('2014-12-23 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), 'dxd004', TO_DATE('2014-12-23 15:12:40', 'YYYY-MM-DD HH24:MI:SS'), '0', '0', '238');
INSERT INTO "DY"."TB_MEMCARDINFO" VALUES ('1592932', '38', '200000435', '0', 'dxd004', '01', TO_DATE('2014-12-23 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), 'dxd004', TO_DATE('2014-12-23 15:12:40', 'YYYY-MM-DD HH24:MI:SS'), '0', '0', '238');
INSERT INTO "DY"."TB_MEMCARDINFO" VALUES ('1592933', '38', '200000436', '0', 'dxd004', '01', TO_DATE('2014-12-23 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), 'dxd004', TO_DATE('2014-12-23 15:12:40', 'YYYY-MM-DD HH24:MI:SS'), '0', '0', '238');
INSERT INTO "DY"."TB_MEMCARDINFO" VALUES ('1592934', '38', '200000437', '0', 'dxd004', '01', TO_DATE('2014-12-23 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), 'dxd004', TO_DATE('2014-12-23 15:12:40', 'YYYY-MM-DD HH24:MI:SS'), '0', '0', '238');
INSERT INTO "DY"."TB_MEMCARDINFO" VALUES ('1592935', '38', '200000438', '0', 'dxd004', '01', TO_DATE('2014-12-23 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), 'dxd004', TO_DATE('2014-12-23 15:12:40', 'YYYY-MM-DD HH24:MI:SS'), '0', '0', '238');
INSERT INTO "DY"."TB_MEMCARDINFO" VALUES ('1592936', '38', '200000439', '0', 'dxd004', '01', TO_DATE('2014-12-23 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), 'dxd004', TO_DATE('2014-12-23 15:12:40', 'YYYY-MM-DD HH24:MI:SS'), '0', '0', '238');
INSERT INTO "DY"."TB_MEMCARDINFO" VALUES ('1592937', '38', '200000440', '0', 'dxd004', '01', TO_DATE('2014-12-23 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), 'dxd004', TO_DATE('2014-12-23 15:12:40', 'YYYY-MM-DD HH24:MI:SS'), '0', '0', '238');
INSERT INTO "DY"."TB_MEMCARDINFO" VALUES ('1592938', '38', '200000441', '0', 'dxd004', '01', TO_DATE('2014-12-23 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), 'dxd004', TO_DATE('2014-12-23 15:12:40', 'YYYY-MM-DD HH24:MI:SS'), '0', '0', '238');
INSERT INTO "DY"."TB_MEMCARDINFO" VALUES ('1592939', '38', '200000442', '0', 'dxd004', '01', TO_DATE('2014-12-23 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), 'dxd004', TO_DATE('2014-12-23 15:12:40', 'YYYY-MM-DD HH24:MI:SS'), '0', '0', '238');
INSERT INTO "DY"."TB_MEMCARDINFO" VALUES ('1592940', '38', '200000443', '0', 'dxd004', '01', TO_DATE('2014-12-23 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), 'dxd004', TO_DATE('2014-12-23 15:12:40', 'YYYY-MM-DD HH24:MI:SS'), '0', '0', '238');


下面给出查询要求(这里不加条件),根据操作人,商场,卡类型,入库时间 ,卡状态分组 结果:



下面写出部分查询语句:

select min(vipcode),max(vipcode) ,count(1),CARDSTATUS,INMALL_ID
from (
select c.vipcode,C.CARDSTATUS ,C.INMALL_ID,row_number() over(partition by c.CARDSTATUS order by c.vipcode)rn
from tb_memcardinfo c ORDER BY C.CARDSTATUS,C.INMALL_ID )
group by CARDSTATUS,vipcode-rn,CARDSTATUS,INMALL_ID
having count(*)>0
order by cardstatus,min(vipcode);


这里面只根据卡状态来进行分组了,更多的条件读者可以自己限定或留言。

查询结果:



可以看出,号段已经分开显示。

这里主要使用了

<span style="color:#ff0000;">row_number() over(partition by c.CARDSTATUS order by c.vipcode)</span>
这个函数是oracle中分析函数,在此不做具体说明。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: