Ваше текущее предложение group by
создает одну строку для каждой партии и картонной упаковки По сути, вам просто нужно удалить shipment
из предложения group by
, чтобы вы получили одну группу на carton_id
: затем вы можете проверить, сколько строк принадлежит группе, как вы изначально предполагали:
select carton_id, count(*)
from shipment
where carton_id is not null
having count(*) > 1
Если существует возможность дублирования (shipment, carton_id)
кортежей, и вы не хотите считать их дважды, вы можете использовать count(distinct shipment)
вместо count(*)
.