【发布时间】:2022-01-12 16:00:45
【问题描述】:
给定模型User 和Invoice,一个用户有很多张发票,一张发票属于一个用户。
发票有 status 和 amount_cents 列。
我需要编写一个查询来获取所有用户列,但还要添加以下列:
-
total_paid别名列对每个用户的所有paid发票中的amount_cents求和 -
total_unpaid别名列,用于汇总每个用户的所有unpaid发票的amount_cents
在使用我为其分配别名的多个子查询时,我有点不知道正确的结构是什么,但我已经为任务的第一部分提出了一些非常基本的东西:
select users.*, (SELECT SUM(amount_cents) FROM invoices) as total_paid from users
join invoices on users.id = invoices.user_id
where invoices.status = 'paid'
group by users.id
我不确定我是否应该从父方或子方编写查询(我想是从父(用户)方,因为我需要的所有数据都在用户列中)但上面的查询似乎是在 total_paid 列中为所有不同的用户返回相同的金额,而不是为每个用户返回正确的金额。
任何帮助将不胜感激。
【问题讨论】:
标签: sql ruby-on-rails database postgresql performance