Моя проблема заключается в следующем:
- Мне нужно проверить, является ли одно из значений (среднее) выбора нулевым
- Если это так, запустите выбор, ища первое ненулевое значение в другом периоде (дате).
- После этого выполните операцию, чтобы проверить, за какой период (дата - диапазон) это
- После этого сделайте среднее
Человеческий язык
Я хочу получить среднюю стоимость всех товаров, сгруппированных по периодам.
Если в определенный период у продукта нет счета-фактуры, мне нужно получить среднее значение за предыдущий период (если у него есть средняя стоимость).
Периоды не являются месяцами, они определяются заказчиком и могут перекрывать 2 месяца, например:
2012-01-01 - 2012-01-29
2012-01-30 - 2012-02-27
Как я могу сделать это в ОДНОМ запросе?
Запрос примерно выглядит следующим образом (average
– это столбец, значение которого я хочу сравнить):
select
p.id
,(select
avg(cost)
from
invoices i
where
i.product_id = p.id
and i.add_date between $start_date
and $end_date
) as average
from
products p;
Таблицы / ДАННЫЕ / Запросы
См. эту суть (это не исходная база данных, я делаю этот тест сейчас): https://gist.github.com/4520123
If in the specific period, the product not have invoice, I need get the average for the previous period
IIUC, предыдущий период подразумевает, что соответствующие периоды хранятся где-то в таблице? Могут ли периоды совпадать? - person wildplasser   schedule 12.01.2013