Size: a a a

pgsql – PostgreSQL

2021 June 15

А

Анатоли in pgsql – PostgreSQL
в разную базу должны подключаться
источник

МИ

Максим Исаев... in pgsql – PostgreSQL
Ребят подскажите, есть таблица балов, задача в том чтоб получить сумму балов за год, но так как таблица пользователей и балов очень большая решили один раз записать в другую таблицу общую сумму за год, и каждый день вычитать сумму балов полученные год назад и прибавлять сумму полученную сегодня.

В итоге получилось что то подобное. Но мне кажется это не совсем правильно + в расчет не берется то что если человек ровно год назад не получал балы а сегодня получил

UPDATE profile.extend set year = year - cl.result from (
    select rtb.ag_id, (sum(rtb.points) - COALESCE(rt.plus, 0)) result
    from profile.rating_change rtb
             left join (
        select ag_id, sum(points) plus
        from profile.rating_change
        where time::date = NOW()::date
        group by ag_id, time::date
    ) rt on rt.ag_id = rtb.ag_id
    where time::date = (NOW() - INTERVAL '365 days')::date
    group by rtb.ag_id, rtb.time::date, rt.plus
) cl where cl.ag_id = extend.ag_id
источник

KM

Kody Maverick in pgsql – PostgreSQL
Что значит сквозной?
источник

СК

Сергей Кравчук... in pgsql – PostgreSQL
мне кажется, или проще всего разным клиентам дать разные адреса для подключения ? )
ну или разные базы ( если речь о базах внутри одного инстанса )
источник

А

Анатоли in pgsql – PostgreSQL
но потом реально это надо сливать в одну нужно будет
источник

СК

Сергей Кравчук... in pgsql – PostgreSQL
так вамнужно пользователей направить на разные базы ?
или разные базы базы потом в одно хранилище слить ?
это уже разные задачи )
источник

w

wi11son in pgsql – PostgreSQL
ребята доброе утро,
подскажите, как подсчитать распределение по промежуткам?

SELECT company_id, COUNT(company_id) as num_of_transactions
FROM company_transactions
GROUP BY company_id
ORDER BY num_of_transactions DESC


упорядочивает по количеству транзакций в каждой компании. А мне поверх этого надо распределить по чанкам от 0 до 100, от 100 до 500, от 500 до 1000, от 1000 до 5000
источник

А

Анатоли in pgsql – PostgreSQL
нужно пользователей направить на разные базы, структура баз одинакова, затем просто по
удаленному коннекту типа vpn c множества баз выкачивать и сливать в центральную
подойдет ли решение на базе patroni
haproxy по условию
источник

w

wi11son in pgsql – PostgreSQL
это через CASE или есть какой-то более приличный вариант?
источник

СК

Сергей Кравчук... in pgsql – PostgreSQL
направить разных пользователей на разные базы, имхо, проще всего, дав им разные адреса

сливать в центральную, это совсем другая задача, например через etl или с использованием cdc

а patroni тут совсем не причем
источник

А

Анатоли in pgsql – PostgreSQL
для репликации думал надежность центральной базы (резревную копию если база ляжет)
источник

СК

Сергей Кравчук... in pgsql – PostgreSQL
это уже третья задача, для этого да, patroni + haproxy вполне подойдет
источник

СК

Сергей Кравчук... in pgsql – PostgreSQL
чанки по 100, можно сделать примерно так
GROUP BY company_id, num_of_transactions/100

а вот чтобы сделать чанки разного размера, нужно уже будет немного подумать, но думаю возможно
решение в лоб - написать функцию, которая в зависимости от num_of_transactions, будет давать номер его чанка, и группировать по результату вызова функции,..
но может есть и более изящное решение
источник

w

wi11son in pgsql – PostgreSQL
а, ну в целом, если степени десятки, то наверно можно так же логарифм какой-то применить
источник

СК

Сергей Кравчук... in pgsql – PostgreSQL
ну тогда границы чанков не факт что будут красивыми, но да, можно что-то придумать )
источник

w

wi11son in pgsql – PostgreSQL
SELECT count(*) as num_of_companies, floor(log(a.num_of_transactions)) as chunk
FROM (
 SELECT company_id, COUNT(company_id) as num_of_transactions
 FROM company_transactions
 GROUP BY company_id
 ORDER BY num_of_transactions DESC
) AS a
GROUP BY chunk
источник

w

wi11son in pgsql – PostgreSQL
вот так сделал, спасибо за идею с калькуляцией в селекте, чет я тупанул
источник

AK

Alex Kalinin in pgsql – PostgreSQL
Всем привет. Такой вопрос - можно ли по логам понять что запрос пришел от триггера?
источник

БК

Борис Козеев... in pgsql – PostgreSQL
Всем привет!
есть код Python для загрузки данных в БД, он работает без ошибок. Но не загружает данные. Аналогичный код для выгрузки работает, все ок. Коннекты к БД и ssh тоже ок. Подскажите пжл что  не так, может БД не понимает команды библиотеки psycopg2 ?

data.copy() #dataframe который надо залить в table

#загрузка данных в PostgreSQL
with SSHTunnelForwarder(#параметры) as tunnel:
   print('pass')
   conn = psycopg2.connect(host, user, password, database,port)
   cur = conn.cursor()
   #очистка данных
   cur.execute('''TRUNCATE ONLY public.table;''')
   df_columns = list(data)
   columns = ",".join(data.columns)
   values = "VALUES({})".format(",".join(["%s" for _ in data.columns]))
   insert = '''INSERT INTO  table ({}) {};'''.format(columns, values)
   #загрузка данных
   psycopg2.extras.execute_batch(cur, insert, data.values)
   print("Данные загружены")
   cur.close()
источник

SD

Sergey D in pgsql – PostgreSQL
Коммита не хватает может?
источник