目前,我有一個PostgreSQL數據庫(和一個結構幾乎相同的SQL Server數據庫)以及一些數據,如下例所示:如何在點之間的最大距離中找到最小值和最大值(SQL)
+----+---------+-----+
| ID | Name | Val |
+----+---------+-----+
| 01 | Point A | 0 |
| 02 | Point B | 050 |
| 03 | Point C | 075 |
| 04 | Point D | 100 |
| 05 | Point E | 200 |
| 06 | Point F | 220 |
| 07 | Point G | 310 |
| 08 | Point H | 350 |
| 09 | Point I | 420 |
| 10 | Point J | 550 |
+----+---------+-----+
ID = PK (auto increment);
Name = unique;
Val = unique;
現在,假設我只有Point F (220)
,我想找到的最低值和最大的價值與數據之間的最大距離小於100。
所以,我的結果必須返回:
- 最低:點E(200)
- 最大:點I(420)
一步解釋步驟(和因爲英語不是我的主要語言):
尋找最低值:
Initial value = Point F (220); Look for the lower closest value of Point F (220): Point E (200); 200(E) < 220(F) = True; 220(F) - 200(E) < 100 = True; Lowest value until now = Point E (200) Repeat Look for the lower closest value of Point E (200): Point D (100); 100(D) < 200(E) = True; 200(E) - 100(D) < 100 = False; Lowest value = Point E (200); Break;
展望FOT最大的價值:
Initial value = Point F (220); Look for the biggest closest value of Point F (220): Point G (310); 310(G) > 220(F) = True; 310(G) - 220(F) < 100 = True; Biggest value until now = Point G (310) Repeat Look for the biggest closest value of Point G (310): Point H (350); 350(H) > 310(G) = True; 350(H) - 310(G) < 100 = True; Biggest value until now = Point H (350) Repeat Look for the biggest closest value of Point H (350): Point I (420); 420(I) > 350(H) = True; 420(I) - 350(H) < 100 = True; Biggest value until now = Point I (420) Repeat Look for the biggest closest value of Point I (420): Point J (550); 550(J) > 420(I) = True; 550(J) - 420(I) < 100 = False; Biggest value Point I (420); Break;
您如何識別您的「初始值」?你是否有它的價值('Val',在你的例子中是'220'),它的'ID'(在你的例子中是'06')還是它的名字(OFC,只有它是唯一的)? – pozs
「ID」是一個自動增量編號。 'Val'是獨一無二的,'name'也是獨一無二的!我最初只有'ID'。 –
從你對已刪除答案的評論(* t在F點與最小值和最大值之間的間隔不小於100,它在上一點和下一點*之間),在我看來這是一個特殊的[標籤:間隙 - 和問題。 – pozs