Mam następujący problem - próbuję stworzyć zapytanie, które zwróci mi różnicę (sumy wartości z dwóch kolumn) z dwóch wierszy - jeden z wierszy będzie zawierał sumę dwóch kolumn z pierwszej próbki z danego dnia, drugi wiersz będzie zawierał sumę dwóch kolumn z ostatniej próbki z danego dnia. Pobranie i połączenie tych wierszy już mam, nie wiem tylko jak teraz otrzymać z nich różnicę. Zagmatwane, więc od razu kod.
SELECT * FROM ( SELECT a, b, a+b suma, sDateTime FROM tabela1 WHERE sDateTime LIKE '2012-01-05%' LIMIT 1) AS t1 UNION SELECT * FROM ( SELECT a, b, a+b suma, sDateTime FROM tabela1 WHERE sDateTime LIKE '2012-01-05%' ORDER BY sDateTime DESC LIMIT 1) AS t2
Z zapytania powyżej otrzymuję taki wynik:
| a | b | suma | sDateTime |
----------------------------------
| 1 | 2 | 3 | 2012-01-05 00:00:01
| 5 | 6 | 11 | 2012-01-05 23:59:59
Natomiast chcę otrzymać jedną liczbę, która będzie wynikiem działania: (suma z wiersza 2 - suma z wiersza 1), czyli w powyższym wypadku: 11-3 = 8. Jak to osiągnąć?
Próbowałem zagnieździć kod z pierwszej ramki w jeszcze jednego select'a, ale nie idzie - coś takiego:
SELECT t2 - t1 FROM ( SELECT * FROM (SELECT a, b, a+b suma, sDateTime FROM tabela1 WHERE sDateTime LIKE '2012-01-05%' LIMIT 1) AS t1 UNION SELECT * FROM (SELECT a, b, a+b suma, sDateTime FROM tabela1 WHERE sDateTime LIKE '2012-01-05%' ORDER BY sDateTime DESC LIMIT 1) AS t2 )
Jak to zrobić w taki sposób, żeby potem łatwo można było dodać kolejne pola (i różnice sum z nich, analogicznie do powyższego przykładu)? Proszę o pomoc.