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

應該還能優化,暫時先想到這種,記錄一下


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM