Если я все правильно понял,
в первом запросе нужно заменить
COUNT(prd.*) as cnt
на
COUNT(*) as cnt
и
GROUP BY prd.id
на
GROUP BY prd.id, prd.name
Будет так:
SELECT DISTINCT
prd.id,
prd.name,
ROUND( MIN(prc.price), 2) AS price,
COUNT(*) as cnt
FROM products prd
LEFT JOIN price prc ON prc.product_id = prd.id
WHERE prd.color = green
GROUP BY prd.id, prd.name
ORDER BY price DESC