我正在寻找一种解决方案来解决SQL中的一般概念(特别是数据库SQL,但我很乐意为任何类型的SQL解决这个问题).这似乎是教科书上的问题,但我不能简单地绕过它.
想象一下,我有一张这样的桌子
______________________
| time | temperature |
----------------------
| 0 | 2 |
| 1 | 1 |
| 2 | 0 |
| 3 | -1 |
| 4 | -2 |
| 5 | -4 |
| 6 | -5 |
| 7 | -3 |
| 8 | -2 |
| 9 | -1 |
| 10 | 1 |
| 11 | 1 |
| 12 | -1 |
| 13 | -2 |
| 14 | -1 |
| 15 | 0 |
| 16 | -2 |
| 17 | -5 |
| 18 | 1 |
...
现在我想添加一个布尔列flag
,它按照以下规则标记所有行:
-
温度为<;=-5或
-
温度为<;0,并且在连续负温度的同一簇中存在温度<;=-5.
这些规则将产生下表
______________________________
| time | temperature | flag |
------------------------------
| 0 | 2 | false |
| 1 | 1 | false |
| 2 | 0 | false |
| 3 | -1 | true |
| 4 | -2 | true |
| 5 | -4 | true |
| 6 | -5 | true |
| 7 | -3 | true |
| 8 | -2 | true |
| 9 | -1 | true |
| 10 | 1 | false |
| 11 | 1 | false |
| 12 | -1 | false |
| 13 | -2 | false |
| 14 | -1 | false |
| 15 | 0 | false |
| 16 | -2 | true |
| 17 | -5 | true |
| 18 | 1 | false |
...
我会怎么做呢?