【发布时间】:2019-10-04 14:27:33
【问题描述】:
消除 SQL 中的重复答案和不匹配
所以问题是我需要找到每天发生的交易,我的答案与正确答案不匹配,我不知道为什么!
这是一个简短的数据库描述“回收公司”
该公司拥有多个回收中心,用于收集可回收材料。他们每个人都收到了支付给可回收物供应商的资金。收到的资金数据记录在表中 收入_o(点,日期,公司) 主键为(point, date),其中point持有回购中心的标识,日期对应资金到账的日历日期。日期列不包括时间部分,因此,每个中心每天到达的钱(inc)不超过一次。表中列出了向可回收供应商付款的信息 结果_o(点,日期,出) 在此表中,主键(点、日期)确保每个回购中心每天报告的付款(出)不超过一次。 对于收入和支出可能每天发生多次的情况,使用另一个数据库模式,其中表的主键由单列代码组成: 收入(代码、点、日期、公司) 结果(代码、点、日期、出) 在这里,日期列也不包含时间部分。
问题是: 假设每个收款点每天可以多次登记收款 (inc) 和支出 (out) [即码列为主键],显示一个表格,每个采集点的每个操作日期对应一行。 结果集:点、日期、每天的总支出(out)、每天的总收入(inc)。 缺失值被视为 NULL。
SELECT Income.point, Income."date", SUM("out"), SUM(inc)
FROM Income left JOIN
Outcome ON Income.point = Outcome.point AND
Income."date" = Outcome."date"
GROUP BY Income.point, Income."date"
UNION
SELECT Outcome.point, Outcome."date", SUM("out"), SUM(inc)
FROM Outcome left JOIN
Income ON Income.point = Outcome.point AND
Income."date" = Outcome."date"
GROUP BY Outcome.point, Outcome."date";
【问题讨论】:
-
如果您对收入和结果进行一些创建表语句和数据,以及您对样本数据的预期结果,可能会得到更好的响应。您可以前往 sqlfiddle.com 并选择 oracle 作为下拉菜单
-
另外,关于 SO 的每个问题都是“试图找出解决这个问题的方法”。请选择一个更好的标题。
-
对不起,我是新手,这是我第一次,下次会更好。