MySQL: GROUP_CONCAT com uma ORDER BY COUNT?
Isso é possível
Digamos que eu tenha uma lista de endereços, com muitas entradas duplicadas. Preciso filtrar todas as duplicatas, porque alguns endereços têm nomes ligeiramente diferentes, mas o mesmo código postal e número de telefon
Primeiro, faço um GRUPO BY no código postal e no telefon
SELECT name, address, postalcode, place, phone
FROM addresses
GROUP BY postalcode, phone
Mas então eu recebo nomes aleatórios. Eu gostaria de obter omelho name, ou seja, o nome com mais entradas por código postal / telefon
Então eu pensei no seguinte. Aqui eu uso a função SUBSTRING_INDEX para obter apenas o primeiro item no group_concat (não há nomes com a string '~~'):
SELECT SUBSTRING_INDEX(
GROUP_CONCAT(DISTINCT name ORDER BY COUNT(name) DESC SEPARATOR '~~')
, '~~', 1),
address,
postalcode,
place,
phone
FROM addresses
GROUP BY postalcode, telephone
mas recebo um 'uso inválido da função de grupo'
Como faço para solicitar o GROUP_CONCAT pelo número de vezes que o nome ocorre?