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
应该还能优化,暂时先想到这种,记录一下