Рекурсивный SQL, увеличились ли последние три значения? - PullRequest
1 голос
/ 04 мая 2010

У меня есть таблица, которая выглядит так:

----------------------
| DateTime   | Value |
----------------------
| 2010-01-01 |   26  |
| 2010-02-01 |   24  |       
| 2010-03-01 |   23  |
| 2010-04-01 |   28  |
| 2010-05-01 |   30  |

Мне нужно выяснить, увеличились ли в стоимости последние три месяца подряд.

Как мне получить SQL, чтобы проверить, увеличилось ли значение для каждого? Если кто-нибудь может дать мне какие-либо советы для решения этой проблемы, это было бы очень признательно!

Спасибо

1 Ответ

2 голосов
/ 04 мая 2010

Если @n означает на единицу меньше количества последовательных значений, которые вы хотите проверить (2, в вашем случае):

SELECT MIN(increase) AS increasing
  FROM (SELECT t1.`Value` > t2.`Value` AS increase
          FROM tbl AS t1
            JOIN tbl AS t2
              ON t1.`DateTime` = t2.`DateTime` + INTERVAL 1 month
          WHERE t1.DateTime < '2010-06-01'
          ORDER BY t1.`DateTime` DESC
          LIMIT @n) AS tmp;

или

SELECT MIN(t1.`Value` > t2.`Value`) AS increasing
  FROM tbl AS t1
    JOIN tbl AS t2
      ON t1.`DateTime` = t2.`DateTime` + INTERVAL 1 month
  WHERE t1.`DateTime` > NOW() - INTERVAL 3 month;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...