Suppose I have table
'tomato pizza' 'Joe'
'vanilla ice cream' 'Joe'
ORDER BY random()
row_number window function should do the trick:
SELECT description, shop FROM (SELECT description, shop, ROW_NUMBER() OVER (PARTITION BY shop ORDER BY RANDOM()) AS rn FROM mytable) t WHERE rn <= 10