
請問在資料庫中如何查詢上圖這樣的情況?
uj5u.com熱心網友回復:
在哪看的這種需求呀!專案中不會用的uj5u.com熱心網友回復:
實際要求比這個還麻煩,我只是簡單舉例敘述問題。uj5u.com熱心網友回復:
1. 這個需求不知道是不是XY問題;2. 如果單單是這個問題的話,在程式里實作起來比較合適,給寫好的SQL傳一個起始id、一個結束id,回傳最大、最小值等比較靈活;
3. 如果需要在SQL中實作的話,建議用另外一張表保存查出來的這些資料,方便以后再次查詢,我隨意建了一些資料,查詢結果如下,不知道是不是樓主想要的結果:
原資料:

查詢的結果:

涉及存盤程序:
BEGIN
DECLARE i int DEFAULT 1;
DECLARE max_ ,min_ ,sum_ ,avg_ int ;
DECLARE ids_ VARCHAR(20) ;
DECLARE count int DEFAULT 0;
SELECT count(*) into count from t_temp ;
WHILE i+5 <= (count+1) DO
SELECT MAX(t.`value`),MIN(t.`value`),SUM(t.`value`),AVG(t.`value`)from t_temp t WHERE t.id in (i,i+1,i+2,i+3,i+4) into max_,min_,sum_,avg_;
SET ids_ = CONCAT_WS(",",i,i+1,i+2,i+3,i+4);
insert into t_temp_view(ids,max,min,sum,avg) values(ids_,max_,min_,sum_,avg_);
SET i = i+1;
end WHILE;
end
uj5u.com熱心網友回復:
mysql> select * from myricemeli;
+----+-----------+
| id | col_value |
+----+-----------+
| 1 | 35 |
| 2 | 68 |
| 3 | 45 |
| 4 | 71 |
| 5 | 59 |
| 6 | 63 |
| 7 | 25 |
| 8 | 46 |
| 9 | 58 |
+----+-----------+
9 rows in set (0.01 sec)
mysql> select id, col_value,
-> (select sum(col_value) from (select col_value from myricemeli where id>=t.id order by id limit 5) b) as s,
-> (select avg(col_value) from (select col_value from myricemeli where id>=t.id order by id limit 5) b) as a
-> from myricemeli t
-> where (select count(*) from myricemeli where id>=t.id)>=5;
+----+-----------+------+---------+
| id | col_value | s | a |
+----+-----------+------+---------+
| 1 | 35 | 278 | 55.6000 |
| 2 | 68 | 306 | 61.2000 |
| 3 | 45 | 263 | 52.6000 |
| 4 | 71 | 264 | 52.8000 |
| 5 | 59 | 251 | 50.2000 |
+----+-----------+------+---------+
5 rows in set (0.00 sec)
mysql>
uj5u.com熱心網友回復:
好厲害,我想過一條SQL來實作的,但是我不會寫SQL,所以才寫了存盤程序;
不知道為什么我執行了你的SQL,只是換了個表名,執行報錯,希望大佬賜教:
我的表結構,只有一個id, value,表名是t_temp,為什么t.id會報錯呢
select id, value,
(select sum(value) from (select value from t_temp where id >= t.id order by id limit 5) b) as s,
(select avg(value) from (select value from t_temp where id >= t.id order by id limit 5) b) as a
from t_temp t where (select count(*) from t_temp where id>=t.id)>=5;
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/24907.html
標籤:MySQL
上一篇:求解
下一篇:條件查詢失敗
