Мне нужна помощь в PostgreSQL.
У меня есть две таблицы
- Predicton - предсказывает будущие бедствия и жертвы для каждого города.
- Меры соответствуют типу поставщиков контроля ущерба для каждого типа стихийного бедствия (включая стоимость и процент «предотвращенных жертв»)
![tables](https://i.stack.imgur.com/XGiuM.png)
Каждая комбинация стихийного бедствия и поставщика имеет количество предотвращенных жертв (процент от показателей * количество прогнозируемых жертв для этой катастрофы * 0,01).
Для каждой комбинации города и стихийного бедствия мне нужно найти двух провайдеров, которые
1) их совокупная стоимость составляет менее миллиона
2) имеют наибольшее количество предотвращенных потерь.
Моя работа и продукт до сих пор
select o1.cname, o1.etype, o1.provider as provider1, o2.provider as provider2, (o1.averted + o2.averted) averted_casualties
from (select cname, m.etype, provider, mcost, (percent*Casualties*0.01)averted
from measures m, prediction p
where (m.etype = p.etype)) as o1, (select cname, m.etype, provider, mcost, (percent*Casualties*0.01)averted
from measures m, prediction p
where (m.etype = p.etype)) as o2
where (o1.cname = o2.cname) and (o1.etype = o2.etype) and (o1.provider < o2.provider) and (o1.mcost + o2.mcost < 1000000)
![outcome of current work](https://i.stack.imgur.com/dzKUv.png)
Как мне изменить этот запрос, чтобы он показывал мне лучшие averted_casualties для каждой комбинации города / стихийного бедствия (не только максимум всей таблицы, максимум для каждой комбинации)
Это желаемый результат:
![desired](https://i.stack.imgur.com/hHNsF.png)
P.S. Мне не разрешено использовать порядок, представления или функции.