Чтобы ответить на ваш первый вопрос, вы должны сделать это с группировкой:
SELECT FROM_UNIXTIME(timestamp_column, '%c.%Y') AS month, some_other_column FROM table_name GROUP BY month;
Что касается вашего второго вопроса, это зависит от того, что вы пытаетесь сделать. Например:
SELECT AVG(payment), SUM(*), FROM_UNIXTIME(timestamp_column, '%c.%Y') AS month, some_other_column FROM table_name WHERE timestamp_column BETWEEN UNIX_TIMESTAMP(200906) AND UNIX_TIMESTAMP(200907) - 1 GROUP BY month;
Возвращает среднее значение платежей и количество (сумма) строк для каждой группы.
Чтобы получить информацию, не сгруппированную с определенного периода, уменьшите запрос следующим образом:
SELECT payment, some_other_column FROM table_name WHERE timestamp_column BETWEEN UNIX_TIMESTAMP(200906) AND UNIX_TIMESTAMP(200907) - 1;