У меня есть стол с несколькими городами, ресторанами и заказами (за ресторан) в течение определенного года. Из этого набора данных, у меня есть проблема о том, что:PostgreSQL, CASE WHEN и IF
- В городах со средним порядка выше, чем 120, рестораны с менее чем 100 для того, должны быть прерваны.
- В городах со средним заказом выше 60, рестораны с порядком менее 40 должны быть прерваны.
- В городах со средним заказом выше 30 ресторанов с менее чем 20 порядком должны быть прерваны.
До сих пор я создал запрос, который может дать мне таблицу со средними заказами для каждого города и помечать их как 1, 2, 3 или 4 следующим образом:
SELECT cities, AVG(orders), COUNT(restaurants),
CASE
WHEN (AVG(orders) >= 120) THEN '1'
WHEN (120 > AVG(orders) >= 60) THEN '2'
WHEN (60 > AVG(orders) >= 30) THEN '3'
ELSE '4'
END AS ranking
FROM c_cities
GROUP BY 1
Итак, теперь я хочу создать оператор, который будет проверять, например: для рейтинга = 1, если заказы> 100 -> сохранить их или обозначить как что-то. для оценки = 2, если заказы> 60 -> аналогичны и т. Д.
Я пытаюсь найти в нем логику и правильную инструкцию. Я думаю, что CASE ... КОГДА не может решить мою проблему. Я читаю документацию для инструкции IF, но я не могу заставить ее работать.
Я был бы признателен за любую помощь вы можете предоставить :)
Пожалуйста, добавьте некоторые примеры данных и ожидаемый результат на основе этих данных (текст _formatted_, пожалуйста, никаких скриншотов. Или еще лучше: 'create table' и' insert' statements) –