Вместо этого используйте оконный минимум:
SELECT
supplierzip
, shopzip
, MIN( type ) over(partition by supplierzip)
FROM (
SELECT
su.supplier_zip AS supplierzip
, sp.shop_zip AS shopzip
, COUNT( p.ptypes ) AS type
FROM supplier su
INNER JOIN parts p ON su.sid = p.sid
INNER JOIN sales s ON p.parts_pid = s.pid
INNER JOIN shop sp ON s.shop_id = sp.shop_id
GROUP BY
su.supplier_zip
, sp.shop_zip
) a
ORDER BY
supplierzip
, shopzip
Обратите внимание, что в подзапросе нет причин использовать order by.
Обратите внимание, что теперь ONLY_FULL_GROUP_BY является поведением по умолчанию для MariaDB иMySQL и, честно говоря, всегда должен был быть (на мой взгляд).см. GROUP BY .
Возьмем, к примеру, результаты, отображаемые в вопросе:
+-------------+---------+-----------+
| supplierzip | shopzip | MIN(type) |
+-------------+---------+-----------+
| 7733 | 55401 | 1 |
, который получен из:
| supplier_zip | shop_zip | COUNT(p.ptypes) |
+--------------+----------+-----------------+
| 7733 | 85254 | 6 |
| 7733 | 33603 | 2 |
| 7733 | 92821 | 7 |
| 7733 | 95070 | 2 |
| 7733 | 94010 | 5 |
| 7733 | 68154 | 6 |
| 7733 | 45277 | 4 |
| 7733 | 94568 | 3 |
| 7733 | 55401 | 3 | <<== why is 55401 chosen???
| 7733 | 85308 | 5 |
| 7733 | 85226 | 6 |
| 7733 | 11021 | 3 |
| 7733 | 35243 | 5 |
| 7733 | 7764 | 3 |
| 7733 | 26505 | 1 |
, но нет очевидной логики для выбораshopzip 55401. Это (похоже) «приближение», используемое, когда ONLY_FULL_GROUP_BY не включен.