Ik ben al twee dagen aan het zwoegen over een performante query, maar helaas
Ik heb 1 tabel waarin elke minuut een de kilowatt-meter stand van een 50-tal meters wordt weggeschreven.
Elke meter verliest soms verbinding en dan wordt er die minuut een null waarde weggeschreven.
Dat ziet er ongeveer zo uit
Nu wil een view die er zo uit ziet
Deze werkt, maar is veel te traag.
Vermoedelijk kunnen jullie betere suggesties geven.
Ik heb 1 tabel waarin elke minuut een de kilowatt-meter stand van een 50-tal meters wordt weggeschreven.
Elke meter verliest soms verbinding en dan wordt er die minuut een null waarde weggeschreven.
Dat ziet er ongeveer zo uit
timestamp | VAL1 | VAL2 | VAL3 |
2012/09/01 10:01 | 1 | 20 | 5 |
2012/09/01 10:02 | 2 | 22 | 7 |
2012/09/01 10:03 | null | 23 | 9 |
2012/09/01 10:04 | 3 | null | 11 |
2012/09/01 10:05 | 3 | 24 | 12 |
Nu wil een view die er zo uit ziet
timestamp | VAL1 | VAL2 | VAL3 |
2012/09/01 10:01 | 0 | 0 | 0 |
2012/09/01 10:02 | 1 | 2 | 2 |
2012/09/01 10:03 | 0 | 1 | 2 |
2012/09/01 10:04 | 1 | 0 | 2 |
2012/09/01 10:05 | 0 | 1 | 1 |
Deze werkt, maar is veel te traag.
SQL:
1
2
3
4
5
6
7
8
9
10
11
12
| SELECT t .timestamp, A.VAL1- LAG(A.VAL1) OVER (ORDER BY A.timestamp) AS VAL1, B.VAL2- LAG(B.VAL2) OVER (ORDER BY B.timestamp) AS VAL2, C.VAL3- LAG(A.VAL3) OVER (ORDER BY B.timestamp) AS VAL2 FROM tabel T LEFT JOIN tabel A ON T .timestamp = A.timestamp AND A.VAL1 IS NOT NULL LEFT JOIN tabel B ON T .timestamp = B.timestamp AND B.VAL2 IS NOT NULL LEFT JOIN tabel C ON T .timestamp = C.timestamp AND C.VAL3 IS NOT NULL |
Vermoedelijk kunnen jullie betere suggesties geven.
[ Voor 72% gewijzigd door Baron op 25-10-2012 16:52 ]