Olá galera, tudo bem?
estou com o seguinte problema em minhas mãos (estou usando o MySQL a propósito, mas esse não é meu problema). Vou usar de exemplo uma tabela ficticia em meu banco de dados
ID UF TIPO DATA
1 RJ 2G 2013-03-06
2 SP 2G 2013-03-06
3 TO 2G 2013-03-06
4 RJ 2G 2013-03-06
5 RJ 2G 2013-03-13
6 SP 2G 2013-03-13
7 TO 2G 2013-03-13
8 RJ 2G 2013-03-13
9 SP 3G 2013-03-13
5 RJ 2G 2013-03-20
6 SP 2G 2013-03-20
7 TO 2G 2013-03-20
8 RJ 2G 2013-03-20
9 SP 3G 2013-03-20
10 TO 3G 2013-03-20
11 RJ 2G 2013-03-27
12 SP 2G 2013-03-27
13 TO 2G 2013-03-27
14 RJ 2G 2013-03-27
15 SP 3G 2013-03-27
16 TO 3G 2013-03-27
17 TO 2G 2013-03-27
18 RJ 2G 2013-04-03
19 SP 2G 2013-04-03
20 TO 2G 2013-04-03
21 RJ 2G 2013-04-03
22 SP 3G 2013-04-03
23 TO 3G 2013-04-03
24 TO 2G 2013-04-03
25 SP 3G 2013-04-03
26 RJ 2G 2013-04-10
27 SP 2G 2013-04-10
28 TO 2G 2013-04-10
29 RJ 2G 2013-04-10
30 SP 3G 2013-04-10
31 TO 3G 2013-04-10
32 TO 2G 2013-04-10
33 SP 3G 2013-04-10
34 RJ 3G 2013-04-10
… … … …
100 RJ 2G 2013-05-01
101 SP 2G 2013-05-01
102 TO 2G 2013-05-01
103 RJ 2G 2013-05-01
104 SP 3G 2013-05-01
105 TO 3G 2013-05-01
106 TO 2G 2013-05-01
107 SP 3G 2013-05-01
108 RJ 3G 2013-05-01
109 RJ 2G 2013-05-01
110 SP 2G 2013-05-01
111 TO 2G 2013-05-01
112 RJ 3G 2013-05-01
Estou tentando fazer uma consulta que traga a contagem de sites da coluna TIPO agrupados por UF e que só podem ser do ultimo dia do mês correspondente. Dinamicamente, sem que eu tenha que ficar atualizando a consulta sempre que um novo mês e ano surgirem na tabela.
EXEMPLO:
CONSULTA 2G
UF Março (apenas os valores do ultimo dia desse mês) Abril (apenas os valores do ultimo dia desse mês) Maio (apenas os valores do ultimo dia desse mês) (Outros meses vão surgir com o passar do tempo)
RJ 2 2 3
SP 1 1 2
TO 2 2 3
…
(outras UFS vão surgir com o passar do tempo)
CONSULTA 3G
UF Março (apenas os valores do ultimo dia desse mês) Abril (apenas os valores do ultimo dia desse mês) Maio (apenas os valores do ultimo dia desse mês) (Outros meses vão surgir com o passar do tempo)
RJ 0 1 2
SP 1 2 2
TO 1 1 1
…
(outras UFS vão surgir com o passar do tempo)
Já tentei os seguintes códigos
----------------- QUERY QUE RETORNA OS VALORES DO ULTIMO DIA DOS MESES ---------------------
SELECT MES, UF, SITES, DIA, DATA
FROM
(
SELECT DISTINCT MONTH(DATA) AS MES, UF AS UF, COUNT(ID) AS sites, MAX(DAY(DATA)) DIA, MAX(DATA) AS DATA
FROM sites_acesso
GROUP BY uf,DAY(DATA), MONTH(DATA)
ORDER BY DATA DESC
) AS TAB
GROUP BY UF, MES
----------------- FUNÇÃO QUE RETORNA A QUANTIDADE DE MES ---------------------
SELECT COUNT(meses_separados.data_maxima) INTO quantidadeMeses
FROM
(
SELECT MAX(DATA) AS data_maxima
FROM sites_acesso
GROUP BY MONTH(DATA)
) AS meses_separados;
Já tentei de muitas formas, mas nenhuma está indo para o resultado que eu pretendo
Se vocês pudessem me ajudar com alguma lógica ou algum pedaço de código, pois meu conhecimento ainda é bastante limitado…