Size: a a a

pgsql – PostgreSQL

2021 January 28

VY

Victor Yegorov in pgsql – PostgreSQL
Rustam
подскажите пожалуйста где ошибся, проблема с округлением целого числа

SELECT DISTINCT industry, round(sum(e_cost / 1000000000), 2) AS price_transaction
FROM ved_data.prom WHERE "period" >= '2020-01-01'GROUP BY industry ORDER BY price_transaction DESC LIMIT 7;
не вижу проблемы в вопросе
источник

R

Rustam in pgsql – PostgreSQL
Victor Yegorov
не вижу проблемы в вопросе
Ошибку показывает, но если запрос делать без обозначения сколько знаков оставить то работает.

function round(double precision, integer) does not exist
 Подсказка: No function matches the given name and argument types. You might need to add explicit type casts.
источник

VY

Victor Yegorov in pgsql – PostgreSQL
Rustam
Ошибку показывает, но если запрос делать без обозначения сколько знаков оставить то работает.

function round(double precision, integer) does not exist
 Подсказка: No function matches the given name and argument types. You might need to add explicit type casts.
round(sum(e_cost)/1000000000.0,2) ?
источник

R

Rustam in pgsql – PostgreSQL
Victor Yegorov
round(sum(e_cost)/1000000000.0,2) ?
попробовал, ошибка все такая же
источник

VY

Victor Yegorov in pgsql – PostgreSQL
Rustam
попробовал, ошибка все такая же
ну приведите к numeric явно round( sum(e_cost)::numeric/1000000000, 2 )
источник

R

Rustam in pgsql – PostgreSQL
Victor Yegorov
ну приведите к numeric явно round( sum(e_cost)::numeric/1000000000, 2 )
Опять выручили, все работает. Спасибо большое!
источник

mm

miruzzy miruzzy in pgsql – PostgreSQL
Yaroslav Schekin
Написать другую триггерную функцию (для BEFORE UPDATE), которая делает то, что нужно.
Всё же не получается сообразить
Что должна возвращать такая функция в случае, когда надо строку удалить ?
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
miruzzy miruzzy
Всё же не получается сообразить
Что должна возвращать такая функция в случае, когда надо строку удалить ?
NULL и выполнять DELETE, казалось бы. А что, не получается?
источник

mm

miruzzy miruzzy in pgsql – PostgreSQL
Yaroslav Schekin
NULL и выполнять DELETE, казалось бы. А что, не получается?
А можно как-то выполнить DELETE старой строки, если в таблице нет OID и поля могут быть не уникальны ( ну прям вот одинаковые все поля у нескольких строк ) ?
источник

mm

miruzzy miruzzy in pgsql – PostgreSQL
т.е. что-то типа delete old ))
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
miruzzy miruzzy
А можно как-то выполнить DELETE старой строки, если в таблице нет OID и поля могут быть не уникальны ( ну прям вот одинаковые все поля у нескольких строк ) ?
Во-первых, такую модель нужно сразу выкинуть переделать.
Во-вторых, а сами-то Вы как можете знать, какую из строк нужно удалить (см. "во-первых")?
источник

mm

miruzzy miruzzy in pgsql – PostgreSQL
Понял))
Пойду что-то мудрить
источник

KZ

Konstantin Zaitsev in pgsql – PostgreSQL
miruzzy miruzzy
Всё же не получается сообразить
Что должна возвращать такая функция в случае, когда надо строку удалить ?
Нельзя  удалить строку в таблице в триггере на эту таблицу вроде?)
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
miruzzy miruzzy
Понял))
Пойду что-то мудрить
"Мудрить" тут не нужно, нужно таблицу нормально переделать, а дубликаты устранить. :)
источник

mm

miruzzy miruzzy in pgsql – PostgreSQL
Konstantin Zaitsev
Нельзя  удалить строку в таблице в триггере на эту таблицу вроде?)
хз)) всё работает)
источник

mm

miruzzy miruzzy in pgsql – PostgreSQL
Вот код
BEGIN
       insert into firebase_log_new(created_at, message, processed_at) values(new.*);
   delete from firebase_log where firebase_log.* = old.* ;
   RETURN null;
   END;
источник

mm

miruzzy miruzzy in pgsql – PostgreSQL
Вот подключение
CREATE TRIGGER trigger_bu_firebase_logs
   before UPDATE ON firebase_log
   FOR EACH ROW
 WHEN ( new.processed_at is not null )
   EXECUTE FUNCTION update_bu_firebase_logs();


Вдруг кому пригодится

Yaroslav спасибо) в который раз выручаешь )
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
miruzzy miruzzy
Вот подключение
CREATE TRIGGER trigger_bu_firebase_logs
   before UPDATE ON firebase_log
   FOR EACH ROW
 WHEN ( new.processed_at is not null )
   EXECUTE FUNCTION update_bu_firebase_logs();


Вдруг кому пригодится

Yaroslav спасибо) в который раз выручаешь )
Да не за что! ;)
источник

KZ

Konstantin Zaitsev in pgsql – PostgreSQL
miruzzy miruzzy
Вот код
BEGIN
       insert into firebase_log_new(created_at, message, processed_at) values(new.*);
   delete from firebase_log where firebase_log.* = old.* ;
   RETURN null;
   END;
Ад
источник

mm

miruzzy miruzzy in pgsql – PostgreSQL
на то я и джун)
источник