Usuário com melhor resposta
Maiores meses de venda

Pergunta
-
Respostas
-
Cheguei a solução:
Adicionei a seguinte linha e minha query: Ordem = row_number() over (partition by e.razao_social order by sum(pv.valor_mercadoria - pv.valor_desconto_fin)desc, e.razao_social).
Vejam o resultado abaixo.
with
media as(
select sum(pv.valor_mercadoria - pv.valor_desconto_fin) as Valor_Mercadoria_Menos_descontofin,
datepart (month,pv.data) as mes, datepart (year,pv.data) as ano, e.codigo_entidade, e.razao_social,
Ordem = row_number() over (partition by e.razao_social order by sum(pv.valor_mercadoria - pv.valor_desconto_fin)desc, e.razao_social)
from produto_venda pv
inner join vw_rs_titulo t on pv.cod_titulo = t.id_titulo
inner join vw_RS_entidade e on t.id_entidade = e.id_entidade
WHERE data >= '01/01/2012 00:00:00' and data < DATEADD(dd, 1, '12/31/2013')
and e.situacao in ('Ativo', 'Bloqueado')
and t.data_cancelamento is null
group by datepart (month,pv.data), datepart (year,pv.data), e.codigo_entidade, e.razao_social)
select Media.razao_social, avg(Media.Valor_Mercadoria_Menos_descontofin) as Bronze,
avg(Media.Valor_Mercadoria_Menos_descontofin) + (avg(Media.Valor_Mercadoria_Menos_descontofin)*0.25) as Prata,
avg(Media.Valor_Mercadoria_Menos_descontofin) + (avg(Media.Valor_Mercadoria_Menos_descontofin)*0.5) as Ouro,
avg(Media.Valor_Mercadoria_Menos_descontofin) + (avg(Media.Valor_Mercadoria_Menos_descontofin)*1) as Diamante
from media
where Ordem <= 6
group by Media.razao_social
order by Media.razao_social- Marcado como Resposta JacksonSFerreira quinta-feira, 3 de julho de 2014 20:32
Todas as Respostas
-
Qual a estrutura da tabela (ou tabelas) envolvidas?
O que você já montou de consulta?
Os tipos de dados são datetime? date? time?
Qual a versão do SQL em questão?
Precisa dos dados tabulados?
Esta utilizando em relatórios, como o Report Server?
Poste mais detalhes, pois somente solicitar o que precisa sem ao menos demonstrar a estrutura da consulta e/ou dados fica complicado de lhe ajudar.
[]´s
-
Utilizei a query abaixo:
select Media.razao_social, avg(Media.Valor_Mercadoria_Menos_descontofin) as Bronze,
avg(Media.Valor_Mercadoria_Menos_descontofin) + (avg(Media.Valor_Mercadoria_Menos_descontofin)*0.25) as Prata,
avg(Media.Valor_Mercadoria_Menos_descontofin) + (avg(Media.Valor_Mercadoria_Menos_descontofin)*0.5) as Ouro,
avg(Media.Valor_Mercadoria_Menos_descontofin) + (avg(Media.Valor_Mercadoria_Menos_descontofin)*1) as Diamante
from
(select top 6 sum(pv.valor_mercadoria - pv.valor_desconto_fin) as Valor_Mercadoria_Menos_descontofin,
datepart (month,pv.data) as mes, datepart (year,pv.data) as ano, e.codigo_entidade, e.razao_social
from produto_venda pv
inner join vw_rs_titulo t on pv.cod_titulo = t.id_titulo
inner join vw_RS_entidade e on t.id_entidade = e.id_entidade
WHERE data >= '01/01/2012 00:00:00' and data < DATEADD(dd, 1, '12/31/2013')
and e.situacao in ('Ativo', 'Bloqueado')
group by datepart (month,pv.data), datepart (year,pv.data), e.codigo_entidade, e.razao_social
order by sum(pv.valor_mercadoria - pv.valor_desconto_fin)desc) as Media
group by Media.razao_social -
Jackson,
Na verdade temos que tentar entender como os seus dados estão armazenados!!!
A estrutura das suas tabelas, e quais valores você esta armazenando.
Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]
-
Cheguei a solução:
Adicionei a seguinte linha e minha query: Ordem = row_number() over (partition by e.razao_social order by sum(pv.valor_mercadoria - pv.valor_desconto_fin)desc, e.razao_social).
Vejam o resultado abaixo.
with
media as(
select sum(pv.valor_mercadoria - pv.valor_desconto_fin) as Valor_Mercadoria_Menos_descontofin,
datepart (month,pv.data) as mes, datepart (year,pv.data) as ano, e.codigo_entidade, e.razao_social,
Ordem = row_number() over (partition by e.razao_social order by sum(pv.valor_mercadoria - pv.valor_desconto_fin)desc, e.razao_social)
from produto_venda pv
inner join vw_rs_titulo t on pv.cod_titulo = t.id_titulo
inner join vw_RS_entidade e on t.id_entidade = e.id_entidade
WHERE data >= '01/01/2012 00:00:00' and data < DATEADD(dd, 1, '12/31/2013')
and e.situacao in ('Ativo', 'Bloqueado')
and t.data_cancelamento is null
group by datepart (month,pv.data), datepart (year,pv.data), e.codigo_entidade, e.razao_social)
select Media.razao_social, avg(Media.Valor_Mercadoria_Menos_descontofin) as Bronze,
avg(Media.Valor_Mercadoria_Menos_descontofin) + (avg(Media.Valor_Mercadoria_Menos_descontofin)*0.25) as Prata,
avg(Media.Valor_Mercadoria_Menos_descontofin) + (avg(Media.Valor_Mercadoria_Menos_descontofin)*0.5) as Ouro,
avg(Media.Valor_Mercadoria_Menos_descontofin) + (avg(Media.Valor_Mercadoria_Menos_descontofin)*1) as Diamante
from media
where Ordem <= 6
group by Media.razao_social
order by Media.razao_social- Marcado como Resposta JacksonSFerreira quinta-feira, 3 de julho de 2014 20:32