У меня есть данные в том же формате, как этоКак выбрать самый низкий и самое высокое значение объединены в одну строку Postgres
+--------+------------+-------+
| type | variety | price |
+--------+------------+-------+
| apple | gala | 2.79 |
| apple | fuji | 0.24 |
| apple | limbertwig | 2.87 |
| orange | valencia | 3.59 |
| orange | navel | 9.36 |
| pear | bradford | 6.05 |
| pear | bartlett | 2.14 |
| cherry | bing | 2.55 |
| cherry | chelan | 6.33 |
+--------+------------+-------+
И я хочу, чтобы получить строку для каждого типа с самой высокой ценой и самую низкую цену, как поэтому, а также разнообразие следует принимать форму строки с самой высокой ценой
+--------+------------+-------+-------+
| type | variety | min | max |
+--------+------------+-------+-------+
| apple | limbertwig | 0.24 | 2.87 |
| orange | navel | 9.36 | 3.59 |
| pear | bradford | 6.05 | 2.14 |
| cherry | chelan | 6.33 | 2.55 |
+--------+------------+-------+-------+
Что является лучшим способом для достижения этой цели с помощью Postgres?
Я нашел этот сайт: How to select the first/least/max row per group in SQL, но это не совсем то, что мне нужно.
Сделал sqlfiddle этого решения и увидел, что он делает так, как ожидалось http://sqlfiddle.com/#!15/19b44/1 НО, как я могу реализовать это в zend, поэтому, если позже мы перейдем от postgres к чему-то еще, как оракул, и он все еще работает (DISTINCT ON - postgres only afaik) – Hammersholt
См. Отредактированный ответ. Я не использую sqlfiddle, потому что он перегружен в последнее время. – klin
Мне удалось выжать из sqlfiddle ответ [для MySQL] (http://sqlfiddle.com/#!9/19b44/1). – klin