【发布时间】:2021-08-30 00:31:56
【问题描述】:
首先,我很抱歉这个基本问题。我想将子数据和交易数量汇总为以下字段:
- 金额(总计)
- 级别(总级别)
- 交易次数(交易次数)
我有 2 个相关的表。一个用户有很多交易。
- 用户表
- 身份证
- 姓名
- 事务表
- 身份证
- user_id
- 金额
- 级别
这是我测试过的查询。但是,它似乎没有按预期工作:
const query = `
SELECT
u.*,
't.amount',
't.level'
COUNT('t.amountDiffCents') as "numberOfTransaction",
SUM('t.level') as "Total Level",
COUNT(u.*) OVER () as "totalCount"
FROM "LoyaltyUser" as u
INNER JOIN "Transaction" as t ON u.id = 't.userId'
GROUP BY u.id
LIMIT $limit
OFFSET $offset;
`;
先谢谢了。
【问题讨论】:
-
numberOfTransaction与totalCount相比有何意义?如果它们的含义不同,请重命名它们,以便它们的含义显而易见。 -
对不起。我误会了这一点。我已经改正了。请再次检查
-
@Dai Yea 当然。我想计算交易次数。
-
但是“计算交易次数”是什么意思?我在您的架构中看不到时间戳...在这种情况下,您应该避免使用诸如“时间”之类的模棱两可的术语来指代“发生”或“行”。
-
顺便说一句,你不应该在没有
ORDER BY的情况下使用LIMIT/OFFSET- 否则你的结果将是未定义的顺序。 PostgreSQL应该为此给你一个警告——我希望你没有使用 MySQL?
标签: postgresql