Убедившись, что вы знаете список всех производителей, вы можете использовать условное агрегирование. Следующий запрос демонстрирует, как это сделать с двумя производителями, A и B:
SELECT
DATE_FORMAT(o.made, '%b-%y'),
SUM(CASE WHEN m.name = 'Manufacturer A' THEN i.price ELSE 0 END) "Manufacturer A",
SUM(CASE WHEN m.name = 'Manufacturer B' THEN i.price ELSE 0 END) "Manufacturer B"
FROM
orders o
LEFT JOIN items i
ON o.order_id = i.id
LEFT JOIN manufacters m
ON manufacter_id = m.id
GROUP BY month(o.made)
Этот вопрос и те связанные с в ответах на него, могли бы помочь: Есть ли некоторый промышленный стандарт в течение недопустимого времени отклика веб-приложения?
Несколько тангенциальный к Вашему вопросу (никакие временные интервалы, извините), но я подозреваю полезный для Вашей работы: общий подход к тайм-аутам должен сбалансировать их с таймеров "возврата".
Это проходит примерно так: первые приводят к таймауту сервиса времена, не волнуйтесь об этом. Во второй раз подряд сервис испытывает таймаут, не потрудитесь называть его в течение секунд N. В третий раз подряд сервис испытывает таймаут, не называйте его в течение секунд N+1. Затем N+2, N+3, N+5, N+8, и т.д., пока Вы не достигаете некоторого максимального предела M.
Счетчик тайм-аута сбрасывается, когда Вы получаете допустимый ответ.
Я использую последовательность Fibbonacci для увеличения периода времени "возврата" здесь, но конечно можно использовать любую другую подходящую функцию - точка быть, если сервис, который Вы пробуете, продолжает синхронизировать Вас, Вы, "вера" в него становится меньшей и меньшей, таким образом, Вы тратите меньше ресурсов, пытающихся добираться до него и стучать в дверь более редко. Это могло бы помочь сервису на другой конец, который мог просто быть перегружен, и перезапрос просто усугубляет положение, и он увеличит Ваше время отклика, так как Вы не будете ждать сервис, который вряд ли ответит.
Возьмите объем данных, Вы передаете через свой веб-сервис видение, сколько времени процесс берет.
Добавьте 60 secs к тому числу и тесту.
Если можно добраться, это к тайм-ауту на исправном соединении затем добавляет еще 30 секунд.
промывка и повторение.
Этот материал приблизительно 30 + вторые тайм-ауты являются смешным советом, IMO. Ваши тайм-ауты должны составить приблизительно 3 секунды. Да. Три. Число после два и прежде четыре. Если Вы создаете приложение на основе SOA, то ОПРЕДЕЛЕННО 3 секунды, или меньше.
Подумайте об этом... пользователь Вашего приложения ожидает ОБЩЕЕ время отклика приблизительно в пять секунд или меньше (предпочтительно приблизительно три). Если КАЖДЫЙ ОТДЕЛЬНЫЙ СЛУЖЕБНЫЙ ВЫЗОВ берет больше чем несколько* миллисекунды* для возврата, Вы политы из шланга. Ожидание 30 + секунды для ОДНОГО сервиса для возврата является вечностью. Пользователь никогда не будет ожидать вокруг этого долго. Плюс, если Вы знаете, что они, как предполагается, возвращаются в пододном втором диапазоне, какой смысл того, чтобы ожидать в течение еще 30 или больше секунд для передачи сигналов о состоянии ошибки; это не собирается волшебно работать где, когда это не сделало 28 секунд назад. Если Ваше приложение имеет дикое колебание в среднее время отклика с пододной секунды до более чем 30 секунд, что-то было разработано неправильно. Вы могли бы думать о некотором кэшировании или чем-то.
Мы обычно занимаем ожидаемое время отклика для того веб-сервиса (как зарегистрировано в нашу интерфейсную спецификацию) и добавляем 30 секунд к нему.
Затем мы контролируем журналы во время UAT, чтобы видеть, существуют ли какие-либо шаблоны (например, определенные занимающие много времени вызовы DB) и изменяются как соответствующие.