Устранение дубликатов ответов и несоответствия в SQL
Итак, проблема состоит в том, что мне нужно найти транзакции, которые происходили каждый день, и существует несоответствие между моим ответом на правильный ответ, и я не знаю, почему!
Это краткое описание базы данных "Фирма по переработке отходов"
Фирма владеет несколькими центрами выкупа для сбора материалов, пригодных для переработки. Каждый из них получает средства, подлежащие выплате поставщикам вторсырья. Данные о полученных средствах записываются в таблицу Income_o (точка, дата, вкл.). Первичным ключом является (точка, дата), где точка содержит идентификатор центра выкупа, а дата соответствует календарной дате поступления средств. были получены. Столбец даты не включает временную часть, поэтому деньги (вкл.) Поступают не чаще одного раза в день для каждого центра. Информация о платежах поставщикам вторсырья хранится в таблице Outcome_o (точка, дата, выход). В этой таблице первичный ключ (точка, дата) гарантирует, что каждый центр выкупа сообщает о платежах (вне) не чаще одного раза в день. , слишком. В случае, если доходы и расходы могут возникать чаще, чем раз в день, используется другая схема базы данных с таблицами, имеющими первичный ключ, состоящий из кода из одного столбца: Доход (код, точка, дата, вкл.) Результат (код, точка, дата,out) Здесь столбец даты также не включает в себя временную часть.
и вопрос заключается в следующем: при условии, что денежные поступления (вкл.) и выплаты (выходные) могут быть зарегистрированы любое количество раздень для каждой точки сбора [т.е. столбец кода является первичным ключом], отобразите таблицу с одной соответствующей строкой для каждой рабочей даты каждой точки сбора. Набор результатов: точка, дата, общая выплата в день (вне), общее потребление денег в день (вкл.). Пропущенные значения считаются 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";