Tenho me confundido muito.
Alguém poderia explicar gentilmente em que circunstâncias eu gostaria de usar um GROUP BY COALESCE?
Meu palpite é que eu o usaria se quisesse agrupar condicionalmente um conjunto de dados pela coluna B (se B não fosse nulo) e pela coluna A caso contrário. Isso soa certo?
Com
GROUP BY b,a
as tuplas(null, 1)
,(1,1)
,(2,1)
e(17,1)
acabariam em quatro grupos diferentes.Com
GROUP BY coalesce(b,a)
as tuplas(null,1)
,(1,1)
,(2,1)
e(17,1)
acabariam no mesmo grupo.Se você deseja o agrupamento "condicional", então sim, a versão com
coalesce
provavelmente é a que você deseja.Aqui está uma demonstração da excelente resposta +1 de a_horse_with_no_name .