Ну, ваше описание, безусловно, оставляет желать лучшего. Но ваш запрос требует лишь небольшой модификации, чтобы он действительно выполнялся. Прежде всего "группировка по дате". Я предполагаю, что это просто опечатка. Но группа без агрегатной функции обычно ничего не делает - и это один из них. Но я верю, что вы пытаетесь подсчитать количество строк по дате. Если это так, то вам нужно разделить и упорядочить предложения в функции row_number. Другая проблема в выражении. Каждая запись в выражении должна возвращать один и тот же тип данных, но в случае, если это не так. Условие THEN возвращает символ (.), В то время как ELSE возвращает цифру c (успех / испытания), которая должна определять 2 столбца цифр c, чтобы быть действительными. Так что нужно изменить? Я приду позже. Учитывая это, мы получаем:
select date
, row_number() over(partition by date order by trl_date) rn
, case when (row_number() over(partition by date order by trl_date)) = 8
then '.'
else (success/trials)::text
end as "After_1M"
from trials;
Примечание. Дата - очень плохая дата - очень плохое имя столбца. Это зарезервированное слово , а также тип данных.