Изменить значения в столбце и строке (PSQL) - PullRequest
0 голосов
/ 03 апреля 2020

Я получаю следующую ошибку для этого запроса: [22P02] ОШИБКА: неверный синтаксис ввода для типа цифры c: "."

select 
date,
row_number () over () as RN,
case when (row_number() over ()) ='8' then '.' else (success/trials) end as "After_1M"
from trials
groupy by date;

Есть ли другой способ указать, что определенное значение в Комбинация ROWxCOLUMN должна быть скорректирована?

1 Ответ

0 голосов
/ 04 апреля 2020

Ну, ваше описание, безусловно, оставляет желать лучшего. Но ваш запрос требует лишь небольшой модификации, чтобы он действительно выполнялся. Прежде всего "группировка по дате". Я предполагаю, что это просто опечатка. Но группа без агрегатной функции обычно ничего не делает - и это один из них. Но я верю, что вы пытаетесь подсчитать количество строк по дате. Если это так, то вам нужно разделить и упорядочить предложения в функции 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;

Примечание. Дата - очень плохая дата - очень плохое имя столбца. Это зарезервированное слово , а также тип данных.

...