统计两行给定记录之间的数据

zhangweiwindow zhangweiwindow 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

-- PostgreSQL V9.04

create table managecard (
id serial,
managecard char(18) not null
);

insert into managecard(managecard) values ('207999900100000020');
insert into managecard(managecard) values ('207999900100000021');
insert into managecard(managecard) values ('207999900100000022');

create table trans (
id serial,
card char(18) not NULl,
transtype char(10) not null,
transtime char(6)
);

insert into trans (card, transtype, transtime ) values ('207999900100000026', '消费', '050000');
insert into trans (card, transtype, transtime ) values ('207999900100000020', '消费', '050100');
insert into trans (card, transtype, transtime ) values ('207999900100000023', '存款', '050200');
insert into trans (card, transtype, transtime ) values ('207999900100000024', '积分消费', '050300');
insert into trans (card, transtype, transtime ) values ('207999900100000022', '启用', '050400');
insert into trans (card, transtype, transtime ) values ('207999900100000026', '消费', '050500');
insert into trans (card, transtype, transtime ) values ('207999900100000023', '积分消费', '050600');
insert into trans (card, transtype, transtime ) values ('207999900100000021', '消费', '050700');
insert into trans (card, transtype, transtime ) values ('207999900100000020', '积分消费', '050800');
insert into trans (card, transtype, transtime ) values ('207999900100000021', '消费', '050900');
insert into trans (card, transtype, transtime ) values ('207999900100000023', '启用', '051000');


/*
过程:
 从trans表第一条记录a开始,如果a的卡号在managecard表中存在,则此条数据其后
 的各条数据的卡号都记录在a的卡号旗下,直到遇到下一条卡号在managecard中存在的记录b
 b记录其后的各条数据的卡号都记录在b的卡号旗下,直到遇到下一条卡号在managecard中存在的数据记录c...,
 如此往复。

根据以上数据及需求得出的结果应该是:
managecard card transtype transtime
-------------------------------------------------------------------
207999900100000020 207999900100000023 存款 050200
207999900100000020 207999900100000024 积分消费 050300
207999900100000022 207999900100000026 消费 050500
207999900100000022 207999900100000023 积分消费 050600
207999900100000021 207999900100000023 启用 051000
*/


小弟不才,能想到的办法只能是一条条检查记录,但是数据量大时肯定不是一个好方法,所以请问有没有更好的办法?
...全文

相关推荐

Mysql 相邻两行记录某列的差值方法

表结构: 数据: 需求: 按照company_id不同分组,然后分别求出相同company_id相邻记录touch_time的差值 SQL: select r1.company_id, r1.touch_time, r2.touch_time, r1.touch_time - r2.touch_time from (select (@rownum := @rownum + 1) as rownum, info.company_id, info.touch_time from sys_touch_info info, (select @rownum := 0) r

weixin_38564598

SQL 统计一个数据库中所有表记录的数量

代码如下: CREATE TABLE #tmptb(tbname sysname,tbrows int ,tbREserved varchar(10),tbData varchar(10) ,tbIndexSize varchar(10),tbUnUsed varchar(10)) INSERT INTO #tmptb exec sp_MSForEachTable ‘EXEC sp_spaceused ”?”’ SELECT * from #tmptb –列出所有表的情况 SELECT tbrows ,tbname FROM #tmptb WHERE tbrows=0 –列出记录数据为0的表

weixin_38729607

kettle统计重复记录个数及明细

统计重复数据的个数,及相同记录都有哪些,如有不懂的地方可随时联系

不忘初_心

使用GROUP BY的时候如何统计记录条数 COUNT(*) DISTINCT

例如这样一个表,我想统计email和passwords都不相同的记录的条数 复制代码 代码如下: CREATE TABLE IF NOT EXISTS `test_users` ( `email_id` int(11) unsigned NOT NULL auto_increment, `email` char(100) NOT NULL, `passwords` char(64) NOT NULL, PRIMARY KEY (`email_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=6 ; INSERT INTO `te

weixin_38564503

SQL一条语句统计记录总数及各状态数

主要为大家介绍了SQL一条语句统计记录总数及各状态数的sql语句,需要的朋友可以参考下

weixin_38516386
评论 1
收藏 已收藏
分享
返回顶部
zhangweiwindow
MySQL 57,062 成员 56,759 内容