我有這張桌子
| ID | 日期 | 時間 | 1 | 2 | 3 |
|---|---|---|---|---|---|
| 1 | 1/1/2021 | 10:00 | 3.15 | 1.45 | 0.77 |
| 2 | 1/1/2021 | 11:00 | 0.00 | -0.95 | -0.89 |
| 3 | 1/2/2021 | 05:00 | -0.44 | 1.15 | -0.73 |
| 4 | 1/2/2021 | 06:00 | 0.85 | -1.00 | 0.00 |
| 5 | 1/3/2021 | 14:00 | -1.07 | 0.00 | 2.09 |
| 6 | 1/3/2021 | 15:00 | 2.05 | 1.25 | 0.00 |
我正在嘗試創建一個新表,在其中保留列 ID、日期和時間以及 1、2、3 列中的每個單元格,以使用以下公式:
當前單元格值減去由同一列中的第一個值和同一列中的當前值形成的范圍中的最大值。因此,所需的表如下所示:
| ID | 日期 | 時間 | 1.1 | 2.1 |
|---|---|---|---|---|
| 1 | 1/1/2021 | 10:00 | 3.15-Max(3.15) | 1.45-Max(1.45) |
| 2 | 1/1/2021 | 11:00 | 0.00-Max(3.15,0.00) | -0.95-Max(1.45,-0.95) |
| 3 | 1/2/2021 | 05:00 | -0.44-Max(3.15,0.00,-0.44) | 1.15-Max(1.45,-0.95,1.15) |
| 4 | 1/2/2021 | 06:00 | 0.85-Max(3.15,0.00,-0.44,0.85) | -1.00-Max(1.45,-0.95,1.15,-1.00) |
| 5 | 1/3/2021 | 14:00 | -1.07-Max(3.15,0.00,-0.44,0.85,-1.07) | 0.00-Max(1.45,-0.95,1.15,-1.00,0.00) |
| 6 | 1/3/2021 | 15:00 | 2.05-Max(3.15,0.00,-0.44,0.85,-1.07,2.05) | 1.25-Max(1.45,-0.95,1.15,-1.00,0.00,1.25) |
由于空間不足,我沒有從所需表中寫入第 3 列,但第 3 列的格式也相同。
我的問題是我找不到前面提到的公式的正確語法。我用我能想到的所有方式搜索它,但我找不到任何有用的東西。
任何人都可以幫助我嗎?
任何幫助將不勝感激!
謝謝!
PS 我是 stackoverflow.com 和 MySQL 的新手,所以,請善待。
uj5u.com熱心網友回復:
將MAX用作決議函式:
SELECT ID, Date, Time, `1`, `2`, `3`,
`1` - MAX(`1`) OVER (ORDER BY ID) AS `1.1`,
`2` - MAX(`2`) OVER (ORDER BY ID) AS `2.1`,
`2` - MAX(`3`) OVER (ORDER BY ID) AS `3.1`
FROM yourTable
ORDER BY ID;
在不支持分析函式的早期 MySQL 版本上,我們可以在這里使用相關子查詢:
SELECT ID, Date, Time, `1`, `2`, `3`,
`1` - (SELECT SUM(t2.`1`) FROM yourTable t2 WHERE t2.ID <= t1.ID) AS `1.1`,
`2` - (SELECT SUM(t2.`2`) FROM yourTable t2 WHERE t2.ID <= t1.ID) AS `2.1`,
`3` - (SELECT SUM(t2.`3`) FROM yourTable t2 WHERE t2.ID <= t1.ID) AS `3.1`
FROM yourTable t1
ORDER BY ID;
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/355548.html
