Para que situação isso se aplica??
Sistema de blog ou artigos, ou essencialmente qualquer tela semelhante a tela abaixo!
Sem muitas delongas o caminho do pote de ouro:
MES|ANO |TOTAL = “SELECT MONTH(created_at) as mes, YEAR(created_at) as ano, COUNT(*) as total
FROM artigos
GROUP BY MONTH(created_at), YEAR(created_at)
ORDER BY created_at ASC”
LETRA| TOTAL = “SELECT left(titulo, 1) as letra, COUNT(*) as total
FROM artigos
where left(titulo, 1) >= ‘A’ AND left(titulo, 1) <=’Z’
GROUP BY left(titulo, 1)
ORDER BY titulo ASC”
NUMERO| TOTAL =“SELECT left(titulo, 1) as numero, COUNT(*) as total
FROM artigos
where left(titulo, 1) >= ‘0’ AND left(titulo, 1) <=’9′
GROUP BY left(titulo, 1)
ORDER BY titulo ASC”
Minha lógica de impressão foi para mes/ano:
se houve mais de 0 registros na consula faça:
do primeiro registo até o ano atual faça:
de 1 a 12 faça (i):
vai desempilhando os registros caso o mes caso do primeiro registro esteja no topo da lista seja == i
caso nao seja o mesmo mes, nao desempilhe, somente imprima o nome do mes
fim. fim. fim.
Não sei se funciona em outros BDs fora mysql, mas eh provavel que sim. Espero ter sido util!