Подсчитать (отличить) и сгруппировать по выпускам, если диапазон группируемых элементов значительный - PullRequest
0 голосов
/ 23 июня 2011

Я объединяю две таблицы (отгрузки и возвраты) и использую группу по, чтобы просмотреть итоги по определенным критериям.Две таблицы связаны через shipment_id.этот столбец в основном уникален, но содержит несколько дубликатов, поскольку каждая партия может содержать более одной позиции, которая также содержится в таблице.

Я пытаюсь подсчитать все отдельные партии, сгруппированные по складу, продавцу,и размер.считать (отличный работает отлично, но не сообщает правильную информацию при использовании с группой, если диапазон группируемых элементов является значительным.

Запрос ниже возвращает 7 отправлений (добавлено) 4 возврата (также добавлено).Хотя при небольшом количестве тестовых данных у меня правильное количество возвратов, в действительности существует 6 отдельных отправлений, а не 7. С помощью этого запроса я в основном просматриваю все отправления и присоединяюсь к информации о возврате, если товар в отправлении былвернул.

select s.warehouse, s.seller, s.size,
count(distinct s.shipment_id) as total_shipments,
count(distinct r.shipment_id) as total_returns
from shipments s
left join returns r
on s.shipment_id = r.shipment_id
group by s.warehouse, s.seller, s.size

Я обеспокоен тем, что созданный мной отчет не будет полностью точным. Есть ли способ обойти эту проблему? Я видел похожие проблемы, но ни одна из них не применима. Iиспользую MYSQL

1 Ответ

0 голосов
/ 23 июня 2011

Я вижу потенциальную проблему. Если отгрузка имеет несколько позиций и может оказаться в дублирующих записях об отправке, это означает, что возможно, что отгрузка поступает с разных складов или продавцов или что размер отличается. Группируя по этим полям, вы рискуете закончить тем, что отгрузка будет рассчитана более одного раза, поскольку shipment_id технически отличается для этой группы.

Вы можете попробовать группировать по s.shipment_id вместо s.warehouse, s.seller, s.size. Проблема здесь в том, что если склад, продавец или размер отличаются, вы в конечном итоге пропустите одну строку (для этого склада / продажи / размера), но итоговые суммы будут складываться.

...