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`),
  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

应该还能优化,暂时先想到这种,记录一下

posted @ 2020-04-29 14:44  沙师弟demo  阅读(2833)  评论(0编辑  收藏  举报