Мне нужно вернуть несколько значений в одном запросе SQL в моей базе данных postgresql. Вот мой запрос:
SELECT AVG("percent"), MIN("percent"), MAX("percent"), AVG("profit"), MIN("profit"), MAX("profit")
FROM public.log_analyticss
WHERE "buyPlatform" = 'platA' AND
"date" >= '1526356073.6126819'
Данные
date sellPlatform profit percent
---------- ------------ ---------- ----------
1526356073.61 platA 0 10.1
1526356073.62 platA 22 11
1526356073.63 platA 3 7
1526356073.64 platA 1 8
1526356073.65 platA 11 9
1526356073.66 platA 12 10
1526356073.67 platA 13 15
Желаемый результат
date sellPlatform profit percent
---------- ------------ ---------- ----------
1526356073.61 platA 0 10.1 //MIN Profit
1526356073.62 platA 22 11 //MAX Profit
1526356073.63 platA 3 7 //MIN Perc
1526356073.67 platA 13 15 //MAX Perc
// Тогда я хочу, чтобы он также возвращал AVG, если это возможно. В противном случае, я не против запустить другой запрос для этого.
Проблема в том, что я не просто хочу значения MIN и MAX. Я хочу всю строку данных, из которых взято значение MIN и MAX.
Я понимаю, что я запрашиваю AVG и значение MIN / MAX, которое будет возвращать данные в двух разных форматах. Я знаю, что это может быть невозможно. Но любая помощь о том, как наиболее эффективно сделать это, была бы чрезвычайно полезной.
Сейчас я просто вытаскиваю весь набор данных в свой код и вычисляю среднее, минимальное и максимальное значения в моем коде, которые я знаю, если они очень плохие, а также очень и очень медленные. Таблица содержит около 8 миллионов строк, а набор данных, который я собираю, составляет около 9000 строк, поэтому сейчас я делаю это очень медленно.