PHP, Java, JavaScript, XML, XHTML, HTML, CSS, ASP, Delphi, Assembly, LaTeX, C, UML, Flash, Perl, SQL, Python, Zope, Pascal, WML. Se conhece mais de 3 siglas referidas, este é o forum para si.
Moderadores: Administradores, Moderadores
por Red_Beret » Sábado Jul 12, 2008 19:28
Boas
Tou aqui com um pequeno problema.
Tenho uma tabela de vendas, que tem tres colunas, a chave, o produto, e a quantidade.
Preciso de uma query (que é bué simples, mas eu tou com uma branca enorme), que me devolva, os primeiros x produtos, que tem mais unidades vendidas.
Algo deste genero:
Tabela:
Chave - Produto - Unidades
1 - 3 - 5
2 - 4 - 2
3 - 3 - 2
4 - 2 - 5
5 - 4 - 3
Resultado esperado (para 1ºs 2 registos com mais unidades vendidas):
Produto
4
3
-
Red_Beret
- Membro Vitalício

-
- Mensagens: 2334
- Registado: Sexta Set 17, 2004 11:13
por SkylineGTR » Sábado Jul 12, 2008 20:08
- Código: Seleccionar todos
SELECT TOP 2 Produto, SUM(Unidades) As TotalVendas
FROM Vendas
GROUP BY Produto
ORDER BY TotalVendas DESC
i7 920 | ASUS P6T Deluxe V2 | 6GB Corsair Dominator PC3-12800 | BFG GTX285 OC2 | 2x WD 640GB + WD 750GB + Seagate 750GB + Samsung F1 1TB | Corsair HX-620 | HP w2207 | Lian Li PC-V1110B
-
SkylineGTR
- Membro Vitalício

-
- Mensagens: 4184
- Registado: Terça Dez 28, 2004 22:26
por Red_Beret » Sábado Jul 12, 2008 20:19
SkylineGTR Escreveu:- Código: Seleccionar todos
SELECT TOP 2 Produto, SUM(Unidades) As TotalVendas
FROM Vendas
GROUP BY Produto
ORDER BY TotalVendas DESC
Boas
não se consegue arranjar maneira de ele devolver apenas a coluna Produto? (isto é para usar como sub-query..)
-
Red_Beret
- Membro Vitalício

-
- Mensagens: 2334
- Registado: Sexta Set 17, 2004 11:13
por Red_Beret » Domingo Jul 13, 2008 10:17
bem, ficou assim
- Código: Seleccionar todos
SELECT TOP (6) Produto FROM Vendas GROUP BY Produto ORDER BY SUM(Quantidade) DESC)
Tks
-
Red_Beret
- Membro Vitalício

-
- Mensagens: 2334
- Registado: Sexta Set 17, 2004 11:13
por Fenrir » Segunda Jul 14, 2008 11:32
para os curiosos, visto que isso não funciona em Oracle.
O código acima efectuado é SQL Server.
Para ser executado em oracle (não podendo usar a função top é feito de maneira diferente)
utiliza-se o rownum
o seguinte código é equivalente à utilização de um top 2
select prod
from
(
select prod,sum(uni)
from
(
select 1 as chv, 3 as prod, 5 as uni from dual
union all
select 2 as chv, 4 as prod, 2 as uni from dual
union all
select 3 as chv, 3 as prod, 2 as uni from dual
union all
select 4 as chv, 2 as prod, 5 as uni from dual
union all
select 5 as chv, 4 as prod, 3 as uni from dual
)
group by prod
order by sum(uni) DESC
)
where rownum <=2
-

Fenrir
- Membro de Prata

-
- Mensagens: 354
- Registado: Segunda Set 20, 2004 22:33
- Localização: Porto
por gimbras » Segunda Jul 14, 2008 17:42
Tmb podiamos fazer um select a ordernar a tabela por produto descedente e limitado a 2 resultados.
Para BDs MySQL:
- Código: Seleccionar todos
SELECT * FROM `vendas` ORDER BY `produto` DESC LIMIT 2;
Apanha os dois campos produto com números mais altos, ou seja, os dois registos com mais vendas.
Cumps.
Editado pela última vez por
gimbras em Segunda Jul 14, 2008 19:36, num total de 2 vezes.
-

gimbras
- Membro Diamante

-
- Mensagens: 1405
- Registado: Quarta Fev 02, 2005 21:55
-
por Red_Beret » Segunda Jul 14, 2008 19:01
Fenrir Escreveu:para os curiosos, visto que isso não funciona em Oracle.
O código acima efectuado é SQL Server.
Para ser executado em oracle (não podendo usar a função top é feito de maneira diferente)
utiliza-se o rownum
o seguinte código é equivalente à utilização de um top 2
select prod
from
(
select prod,sum(uni)
from
(
select 1 as chv, 3 as prod, 5 as uni from dual
union all
select 2 as chv, 4 as prod, 2 as uni from dual
union all
select 3 as chv, 3 as prod, 2 as uni from dual
union all
select 4 as chv, 2 as prod, 5 as uni from dual
union all
select 5 as chv, 4 as prod, 3 as uni from dual
)
group by prod
order by sum(uni) DESC
)
where rownum <=2
Já agora, em DB2
- Código: Seleccionar todos
SELECT Produto
FROM Vendas
GROUP BY Produto
ORDER BY SUM(Quantidade) DESC
FETCH FIRST 6 ROWS ONLY
-
Red_Beret
- Membro Vitalício

-
- Mensagens: 2334
- Registado: Sexta Set 17, 2004 11:13
por Fenrir » Terça Jul 15, 2008 9:04
Red_Beret trabalhas com websphere?
DB2 vale alguma coisa? Admito nunca me ter aventurado, é da IBM né?
-

Fenrir
- Membro de Prata

-
- Mensagens: 354
- Registado: Segunda Set 20, 2004 22:33
- Localização: Porto
por Red_Beret » Terça Jul 15, 2008 18:39
Fenrir Escreveu:Red_Beret trabalhas com websphere?
DB2 vale alguma coisa? Admito nunca me ter aventurado, é da IBM né?
népia, trabalho um cadinho mais abaixo, na parte da programação em ecras pretos com letras verdes (COBOL, CICS; DB2, etc)
Websphere é Java, né?
ya, o DB2 é porreiro. É mais um SGBD

-
Red_Beret
- Membro Vitalício

-
- Mensagens: 2334
- Registado: Sexta Set 17, 2004 11:13
Voltar para Programação
Quem está ligado:
Utilizador a ver este Fórum: Nenhum utilizador registado e 1 visitante