Foros del Web » Programación para mayores de 30 ;) » .NET »

Lío con consulta SQL: sum, Group by

Estas en el tema de Lío con consulta SQL: sum, Group by en el foro de .NET en Foros del Web. Hola, me estoy liando con una consulta sql. A ver si alguien me puede echar un cable. A ver, por ejemplo tengo una tabla de ...
  #1 (permalink)  
Antiguo 20/11/2006, 06:51
Avatar de freegirl
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: Catalonia
Mensajes: 4.334
Antigüedad: 20 años, 7 meses
Puntos: 156
Lío con consulta SQL: sum, Group by

Hola,

me estoy liando con una consulta sql. A ver si alguien me puede echar un cable.

A ver, por ejemplo tengo una tabla de facturas con su respectiva tabla de detalle de factura. En el detalle de factura se almacena entre otros:

numero factura, linea, ID artículo, familia artículo,descripción artículo, cantidad, precio


Pues de ahí tengo que sacar unos listados resúmen de los artículos vendidos y la cantidad vendida, agrupados por familia y código artículo, pero tambien filtrando esa búsqueda por intervalo de facturas, fechas, etc.

O sea, si yo tengo en la tabla detalle esto:

Cita:
Nº fac.| linea |ID Artículo | Familia |Descripción art. | cant.| precio

1 | 1 |120 | Frutas | Manzana | 2 | 0,50
1 | 2 | 200 | Verduras | acelgas | 10 | 2,00
2 | 1 | 120 | Frutas | Manzana | 5 | 0,50
3 | 1 | 120 | Frutas | MAnzana | 1 | 0,50
3 | 2 | 128 | Frutas | Limones | 2 | 3,00
Quiero que el listado me haga eso que he dicho anteriormente. Entonces el resultado del listado sería este:

(sacar unlistado agrupado por familia, y poniendo la cantida total del producto vendido)

Cita:
Frutas
------

Manzana | 8 | 0,50
Limones | 2 | 3,00

(o sea que salga que se han vendido en total 8 manzanas, no que me ponga tres veces manzana)

Verduras
----------
acelgas | 10 | 2,00
He hecho una consulta con SUM y group by pero me da error.

¿se ha entendido más o menos lo que quiero decir?

A malas lo haré por código y con un reader, pero claro es mucho más engorroso, pudiendose hacer con una cnsulta...

Cualquier aportación será bien recibida.

Gracias de antemano.

saludos
  #2 (permalink)  
Antiguo 20/11/2006, 09:04
Avatar de jabi  
Fecha de Ingreso: noviembre-2006
Mensajes: 120
Antigüedad: 17 años, 6 meses
Puntos: 1
Buenas freegirl, no sé si te funcionará, yo estoy aprendiendo con Access y voy comprobando que hay muchos SGBD mejores, pero es lo que hay por ahora =)

A ver si ésto te funciona:

Código:
SELECT Familia, Descripcion,  Sum(cantidad) As Cantidad_Total
FROM Facturas
GROUP BY familia, descripcion
ORDER BY familia, descripcion;
Como verás agrupo primero por familia, y después por el nombre del producto ("descripción art." en tu tabla), y con esa agrupación el Sum(cantidad) te debería dar la suma correctamente.

A ver si te sirve, salu2
  #3 (permalink)  
Antiguo 20/11/2006, 09:37
Avatar de freegirl
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: Catalonia
Mensajes: 4.334
Antigüedad: 20 años, 7 meses
Puntos: 156
Gracias por contestar.

Lo que pasa que debo hacer un select con muchos más campos, y me da error ya que no están en el "group by".

Y otra cosa es que también debo filtar el SELECT por varios parámetros.

Saludos
  #4 (permalink)  
Antiguo 20/11/2006, 09:48
Avatar de jabi  
Fecha de Ingreso: noviembre-2006
Mensajes: 120
Antigüedad: 17 años, 6 meses
Puntos: 1
Para filtrar la consulta con 'Where' o 'Having' según lo que desees filtrar, ¿no?

De esta misma tabla, ¿qué más quieres mostrar en el SELECT? Ahora mismo no sabría decirte cómo se puede mostrar una columna en el SELECT si no se ha puesto en el GROUP BY =/ A ver si alguien más puesto nos saca de dudas...

Salu2
  #5 (permalink)  
Antiguo 21/11/2006, 10:30
 
Fecha de Ingreso: noviembre-2006
Mensajes: 2
Antigüedad: 17 años, 5 meses
Puntos: 0
Sonrisa Duda Sobre Group By

Bueno mis queridos amigos, en SQL hay ciertas sintaxis que respetar y segun lo que he aprendido en SQL por cuantos campos estes eligiendo en el SELECT (a ecepcion de los campos que van sumados) deben de contenerse tambien en el group by ... Es decir si en una instruccion tengo:

select campo1, campo2, sum(campo3) as suma
from tabla1
group by campo1,campo2

select campo1, campo2, sum(campo3) as suma, campo4 -si agrego un campo 4
from tabla1
group by campo1,campo2 -- tambien debo agregar el campo 4 aca


No se si eso despeje la duda

YO en su lugar para sacar esa informacion consolidada replantearia el script de otra forma. Suerte
  #6 (permalink)  
Antiguo 21/11/2006, 12:47
Avatar de erick_arcini  
Fecha de Ingreso: julio-2005
Ubicación: Jaltenco / DF
Mensajes: 1.723
Antigüedad: 18 años, 9 meses
Puntos: 50
y ocupando subconsultas?

select distinct campo1X, capo2X from tablaX where
(select sum(campoX) from campo1X where campo1X = manzanas, etc.) order by [[campos]]

y en cuestion por lo que dice "el sicario" y sin ofender a las causas, el order by puede contener n cantidad de campos y no importan los que se hayan seleccionado
__________________
Mejoremos nuestro país, ayudemos al planeta... próximamente.
  #7 (permalink)  
Antiguo 09/06/2010, 11:39
 
Fecha de Ingreso: junio-2010
Mensajes: 4
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Lío con consulta SQL: sum, Group by

SELECT *,SUM(precio) AS precioT FROM ventas WHERE habitacionId = '3'
GROUP BY horaEntrada
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:34.