У меня есть таблица в PostgreSQL со следующей структурой и данными:
Question | Answer | Responses
---------------------------------------
Burger BigMac 8
Burger Whopper 19
Burger Cheeseburger 4
Drink Coke 22
Drink Water 1
Drink Juice 7
Side Salad 8
Side Fries 19
Как мне выполнить запрос, который возвращает «Ответ» с самыми высокими «Ответами» для каждого «Вопроса»? Для приведенных выше данных я хотел бы видеть что-то вроде:
Question | Answer | Responses
---------------------------------------
Burger Whopper 19
Drink Coke 22
Side Fries 19
У меня нет проблем с получением самого высокого «Ответа» для каждого «Вопроса», но также получение соответствующего «ответа» оказывается проблемой. SQL, который работает, чтобы получить вопрос и самый высокий ответ:
SELECT Question, MAX(Responses) FROM mytable GROUP BY Question;
Может ли кто-нибудь пролить свет на последнюю часть моего уравнения - показать соответствующий ответ?
Я пробовал это:
SELECT Question, Answer, MAX(Responses) FROM mytable GROUP BY Question;
однако Postgres жалуется, что ответ не используется в статистическом выражении или выражении GROUP BY. Нужно ли мне заранее определить все мои вопросы, а затем выполнить SQL-запрос для каждого вопроса, чтобы найти ответ с наибольшим количеством ответов? Я бы предпочел не идти по этому грязному пути, но это вариант, я думаю.
Спасибо!