我有一個名為pwrDay包含電子索引計數器的表(一直在增長)。
| 日 | pwrconsohp | 電力公司 | 生產線 | 最大功率 |
|---|---|---|---|---|
| 2021-09-26 | 35 736 527 | 18 073 331 | 12 629 677 | 0 |
| 2021-09-27 | 35 754 125 | 18 073 331 | 12 637 154 | 0 |
| 2021-09-28 | 35 780 113 | 18 073 331 | 12 646 963 | 0 |
| 2021-09-29 | 35 807 081 | 18 073 331 | 12 657 084 | 0 |
| 2021-09-30 | 35 833 193 | 18 073 331 | 12 668 804 | 0 |
| 2021-10-01 | 35 861 259 | 18 073 331 | 12 682 444 | 0 |
| 2021-10-02 | 35 888 342 | 18 073 331 | 12 693 908 | 0 |
| 2021-10-03 | 35 917 218 | 18 073 331 | 12 704 696 | 0 |
| 2021-10-04 | 35 944 869 | 18 073 331 | 12 706 056 | 0 |
| 2021-10-05 | 35 972 043 | 18 073 331 | 12 708 309 | 0 |
我需要提取前一行和當前行之間的差異(也許創建一個視圖?)以下查詢適用于大多數日子,但每個月的第一天都是錯誤的(或者如果我錯過了控制日):
SELECT pwr.jour,
(pwr.pwrconsoHP-ifnull(oldpwr.pwrconsoHP, 0)) as deltaconsoHP,
(pwr.pwrconsoHC-ifnull(oldpwr.pwrconsoHC, 0)) as deltaconsoHC,
(pwr.pwrProd-ifnull(oldpwr.pwrProd, 0)) as deltaProd
FROM pwrDay pwr
LEFT OUTER JOIN pwrDay oldpwr ON
(day(pwr.jour)-day(oldpwr.jour)=1 AND MONTH(pwr.jour)=MONTH(oldpwr.jour))
ORDER BY jour;
我也試過這個查詢:
SELECT pwr.jour,
(pwr.pwrconsoHP-LAG(pwr.pwrconsoHP, 0)) as deltaconsoHP,
(pwr.pwrconsoHC-LAG(pwr.pwrconsoHC, 0)) as deltaconsoHC,
(pwr.pwrProd-LAG(pwr.pwrProd, 0)) as deltaProd
FROM pwrDay pwr
ORDER BY jour;
但是,它根本不運行。我收到此錯誤訊息:
Erreur SQL (1305) : FUNCTION velbus.LAG 不存在
我該如何撰寫此查詢?
uj5u.com熱心網友回復:
SELECT pwr.jour,
(pwr.pwrconsoHP-LAG(pwr.pwrconsoHP, 0) OVER(order by jour)) as deltaconsoHP,
(pwr.pwrconsoHC-LAG(pwr.pwrconsoHC, 0) OVER(order by jour)) as deltaconsoHC,
(pwr.pwrProd-LAG(pwr.pwrProd, 0) OVER(order by jour)) as deltaProd
FROM pwrDay pwr
ORDER BY jour;
試一試 ...
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/344751.html
