mysql查询数据是否连续增长
记录⼀次⽐较查询,需求是⽐较内容是否⼀次⽐⼀次⾼,⽤来作为标签依据
⼤致问题如下简化:
班级中有若⼲⼈,若⼲次考试。需要查询某⼈在考试时成绩越来越好(分数是每次都有增长)
思路:
1。使⽤group by 分组,然后在查询内容使⽤ group_concat(【成绩字段】 order by 【时间或者⾃增长id】) 查询出每次按时间顺序考试的成绩拼接,
2。使⽤group by 分组,然后在查询内容使⽤ group_concat(【成绩字段】 order by 【成绩字段】) 查询出按成绩⼤⼩排序的内容。
join  上去。
再⽤查询出来的内容⽐较是否相同。如果相同。那么就说明这个⼈的成绩每次都有提升。
具体sql 如下:
创建表结构:
CREATE TABLE `t_stock` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
`stock_id` varchar(11) DEFAULT NULL COMMENT '股票代码',
`stock_name` varchar(20) DEFAULT NULL COMMENT '股票名称',
`sell_amount` double DEFAULT NULL COMMENT '主动出售统计⾦额',
`buy_amount` double DEFAULT NULL COMMENT '主动购买⾦额',
`unknow_amount` double DEFAULT NULL COMMENT '未知动向⾦额',
`market_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '交易时间',
`create_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '创建时间',
`data_amount` double DEFAULT NULL COMMENT '今⽇收盘价格',
`big_sell_amount` double DEFAULT NULL COMMENT '主动出售统计⼤单⾦额',
`big_buy_amount` double DEFAULT NULL COMMENT '主动购买⼤单⾦额',
PRIMARY KEY (`id`),
mysql group by order by
KEY `stock_id` (`stock_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=44248 DEFAULT CHARSET=utf8 COMMENT='记录每天某些股票的交意记录为以后提供参考';⼤致查询sql:
select * from (
select GROUP_CONCAT((buy_amount+sell_amount) order by buy_amount+sell_amount) hl,stock_id , stock_name ,
SUBSTRING_INDEX(GROUP_CONCAT(data_amount order by id),',',1) from t_stock  group by stock_id
)aa
join
(
select GROUP_CONCAT((buy_amount+sell_amount) order by id) idhl,stock_id , stock_name ,
SUBSTRING_INDEX(GROUP_CONCAT(data_amount order by id),',',1) from t_stock  group by stock_id
)bb
on aa.stock_id = bb.stock_id
where  aa.hl=bb.idhl
应该还能优化,暂时先想到这种,记录⼀下