我有一個尷尬的情況,我有一個表存儲了隨時間變化的數據。在SQL查詢(MySQL)中選擇連續組中的最小值
我有一列groupId
哪些組變成一個給定的值。我有value
,它存儲的值更改爲,並且我有date
它存儲更改發生的日期。
例如如果價值a
應運而生的20000101
和變化b
上20010101
,我們可能會碰到這樣的:
+---------+-------+----------+
| groupId | value | date |
+---------+-------+----------+
| 42 | a | 20000101 |
| 42 | b | 20010101 |
+---------+-------+----------+
現在把事情的樂趣,我們可以有哪些不值表示材料的變化如記錄
+---------+-------+----------+
| groupId | value | date |
+---------+-------+----------+
| 43 | a | 20000101 |
| 43 | b | 20010101 |
| 43 | b | 20020101 |
+---------+-------+----------+
和額外的樂趣,我們可以有哪些更改到別的東西的值,然後又變回它以前一樣:
+---------+-------+----------+
| groupId | value | date |
+---------+-------+----------+
| 44 | a | 20000101 |
| 44 | b | 20010101 |
| 44 | a | 20020101 |
+---------+-------+----------+
結合這些結合在一起,我們可以有一組看起來是這樣的:
+---------+-------+----------+
| groupId | value | date |
+---------+-------+----------+
| 45 | a | 20000101 |
| 45 | a | 20010101 |
| 45 | b | 20020101 |
| 45 | b | 20030101 |
| 45 | a | 20040101 |
| 45 | a | 20050101 |
| 45 | b | 20060101 |
| 45 | b | 20070101 |
+---------+-------+----------+
我需要做的是編寫一個查詢將返回的行爲一組,但丟掉任何的那些非物質的變化。對於以上45組中,這意味着在返回:
+---------+-------+----------+
| groupId | value | date |
+---------+-------+----------+
| 45 | a | 20000101 |
| 45 | b | 20020101 |
| 45 | a | 20040101 |
| 45 | b | 20060101 |
+---------+-------+----------+
即我們只保留的最早日期爲每個「連續」基團(的groupId ,,值)。
是否有任何合理的方法來實現這一目標?
我在MySQL中這樣做,雖然不依賴於此的解決方案將是理想的。