gpt4 book ai didi

sql - PostgreSQL:按记录数对数据进行分组的有效方法

转载 作者:行者123 更新时间:2023-11-29 14:30:32 25 4
gpt4 key购买 nike

例子

CREATE TABLE transactions (
id SERIAL PRIMARY KEY,
value NUMERIC NOT NULL
);

CREATE TABLE batches (
id SERIAL PRIMARY KEY,
total_value NUMERIC NOT NULL
);

CREATE TABLE transaction_batches (
id SERIAL PRIMARY KEY,
batch_id INT NOT NULL REFERENCES batches (id) ON DELETE CASCADE ON UPDATE CASCADE,
transaction_id INT NOT NULL REFERENCES transactions (id) ON DELETE CASCADE ON UPDATE CASCADE
);
  • transaction_batches 表中,交易应该以 N 笔交易为一组进行分组
  • 用户可以随时删除或创建交易
  • 如果用户更改了交易,则必须重新排列交易批处理(以确保20笔交易的批处理)

目标

有效地将交易分组为 N 笔交易,每笔交易由用户更改

问题

您能否提出实现目标的解决方案?

P.S.您可以建议另一个表结构

最佳答案

我会简单地做:

CREATE TABLE transactions (
id SERIAL PRIMARY KEY,
value NUMERIC NOT NULL,
batch_num INT NOT NULL
);

设置 batch_num 等于:

SELECT floor((row_number() over (order by id) - 1) / N)

您可以在触发器中执行此操作。或者您可以简单地使用 View 在查询表时进行计算。

关于sql - PostgreSQL:按记录数对数据进行分组的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52464405/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com