Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

joão pedro7

sql

Recommended Posts

olá pessoal estava precisando contar o numero de registros de um determinado estado. e tambem o numero de registros de cada estado por mes.....

 

eu fiz essa query

SELECT m.nome, count( v.codigo ) AS quant, MONTH( v.hora_marcada ) AS mes
FROM intra_pedidos v
INNER JOIN estado m ON v.cod_uf = m.codigo
GROUP BY m.nome
ORDER BY mes
LIMIT 0 , 30

 

e ela me retorna

 

nome quant mes

Rio Grande do Sul 5 0

São Paulo 2 4

 

no caso no mes retornou mes 4... mas se eu tiver no mes 2,3 etc.. sempre me retorna no ultimo mes

Compartilhar este post


Link para o post
Compartilhar em outros sites

PRa nao complicar muito você poderia fazer duas querys separadas... uma pra contar os registros e outra pra contar registros por mes... :thumbsup:

 

Caso nao seja seu interesse explique mas sobre o q você quer realmente... :grin:

Compartilhar este post


Link para o post
Compartilhar em outros sites

PRa nao complicar muito você poderia fazer duas querys separadas... uma pra contar os registros e outra pra contar registros por mes... :thumbsup:

 

Caso nao seja seu interesse explique mas sobre o q você quer realmente... :grin:

 

por exemplo eu tneho minha tabela 'estado' com codigo, nome (todos estados do brasil),

e na tabela 'intra_pedidos' codigo, hora_pedido(seria uma datetime), e outros campos.

 

eu quero contar quantos registros eu tenho por estado separando por mes

 

por ex..

 

rio grande do sul, janeiro (2 pedidos), fevereiro (4 pedidos) e asim por diante

Compartilhar este post


Link para o post
Compartilhar em outros sites
SELECT m.nome, MONTH( v.hora_marcada ) AS mes, count( v.codigo ) AS quant
FROM intra_pedidos v
INNER JOIN estado m ON v.cod_uf = m.codigo
GROUP BY m.nome,MONTH( v.hora_marcada )
ORDER BY 1,2
LIMIT 0 , 30

Compartilhar este post


Link para o post
Compartilhar em outros sites

SELECT m.nome, MONTH( v.hora_marcada ) AS mes, count( v.codigo ) AS quant
FROM intra_pedidos v
INNER JOIN estado m ON v.cod_uf = m.codigo
GROUP BY m.nome,MONTH( v.hora_marcada )
ORDER BY 1,2
LIMIT 0 , 30

 

vlw mas desse jeito, nao sera possivel pq cada estado eu preciso fazer uma string asim

"['0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0']" substituindo os zeros pela quantidade naquele mes, alguem pode da uma sugestão de como pode ser feito

Compartilhar este post


Link para o post
Compartilhar em outros sites

CASE

 

select nome,
      sum(case when mes =  1 then quant else 0 end) janeiro,
      sum(case when mes =  2 then quant else 0 end) fevereiro,
      ...
      sum(case when mes = 12 then quant else 0 end) dezembro
from
(
SELECT m.nome, MONTH( v.hora_marcada ) AS mes, count( v.codigo ) AS quant
FROM intra_pedidos v
INNER JOIN estado m ON v.cod_uf = m.codigo
GROUP BY m.nome,MONTH( v.hora_marcada )
)
group by nome
ORDER BY 1

 

Ajudou?

Compartilhar este post


Link para o post
Compartilhar em outros sites

select m.nome,

sum(case when mes = 1 then quant else 0 end) AS janeiro,

sum(case when mes = 2 then quant else 0 end) AS fevereiro,

sum(case when mes = 12 then quant else 0 end) AS dezembro

from

(SELECT m.nome, MONTH( v.hora_marcada ) AS mes, count( v.codigo ) AS quant

FROM intra_pedidos v

INNER JOIN estado m ON v.cod_uf = m.codigo

GROUP BY m.nome,MONTH( v.hora_marcada ))

ORDER BY 1,2

LIMIT 0 , 30

 

tentei asim mas fica dando o erro..

 

#1248 - Every derived table must have its own alias

Compartilhar este post


Link para o post
Compartilhar em outros sites

Every derived table must have its own alias .

Toda tabela derivada deve ter um "alias".

 

select m.nome,
sum(case when mes = 1 then quant else 0 end) AS janeiro,
sum(case when mes = 2 then quant else 0 end) AS fevereiro,
sum(case when mes = 12 then quant else 0 end) AS dezembro
from
(SELECT m.nome, MONTH( v.hora_marcada ) AS mes, count( v.codigo ) AS quant
FROM intra_pedidos v
INNER JOIN estado m ON v.cod_uf = m.codigo
GROUP BY m.nome,MONTH( v.hora_marcada )) VIRTUAL
ORDER BY 1,2
LIMIT 0 , 30

 

PS faça o CASE para os outros meses ....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Every derived table must have its own alias .

Toda tabela derivada deve ter um "alias".

 

select m.nome,
sum(case when mes = 1 then quant else 0 end) AS janeiro,
sum(case when mes = 2 then quant else 0 end) AS fevereiro,
sum(case when mes = 12 then quant else 0 end) AS dezembro
from
(SELECT m.nome, MONTH( v.hora_marcada ) AS mes, count( v.codigo ) AS quant
FROM intra_pedidos v
INNER JOIN estado m ON v.cod_uf = m.codigo
GROUP BY m.nome,MONTH( v.hora_marcada )) VIRTUAL
ORDER BY 1,2
LIMIT 0 , 30

 

PS faça o CASE para os outros meses ....

 

vlww funcionando ;D

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.