【发布时间】:2020-06-08 08:08:18
【问题描述】:
以下是我无法理解正确方法的 SQL 查询问题:
数据库表:
Employee: emp_id, emp_name
Credit: credit_id, emp_id, credit_date, credit_amount
debit: debit_id, emp_id, debit_date, debit_amount
在这里,每个人可以有多种收入和支出。
查询要求:每天结束时,每个员工都会有一些资产('贷到现在' - '借到现在')。我们需要根据最大资产以及他们拥有该最大资产的日期来找出前五名员工。
我已经尝试了以下查询,但似乎我遗漏了一些东西:
select Credit.emp_id, Credit.date, (Credit.income_amount - Debit.credit_amount) from
(select emp_id, sum(amount) as credit_amount
from credit) Credit
LEFT JOIN LATERAL (
select emp_id, sum(amount) as debit_amount
from debits
where debits.emp_id = Credit.emp_id and Credit.date >= debits.date
group by debits.emp_id
) Debit
ON true
【问题讨论】:
-
听起来您需要一个函数来运行计算、存储结果,然后将它们相互比较以找到五名员工。你能分享你尝试过的东西吗?请看minimal-reproducible-example
标签: mysql sql database postgresql