Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

Sacar columna con totales en una query

Estas en el tema de Sacar columna con totales en una query en el foro de Oracle en Foros del Web. Buenas tardes a todos, es mi primer post aquí y espero que puedan ayudarme. Tengo el siguiente problema, si tengo una tabla: ACTIVIDAD VENTAS Librería ...
  #1 (permalink)  
Antiguo 11/08/2011, 09:57
 
Fecha de Ingreso: agosto-2011
Mensajes: 1
Antigüedad: 13 años, 3 meses
Puntos: 0
Pregunta Sacar columna con totales en una query

Buenas tardes a todos, es mi primer post aquí y espero que puedan ayudarme.

Tengo el siguiente problema, si tengo una tabla:

ACTIVIDAD VENTAS
Librería 2000
Electrónica 1000
Fotografía 3000

Me gustaría generar una consulta añadiendo una columna con el total de ventas general independientemente de la actividad. Resultando:


ACTIVIDAD VENTAS TOTAL
Librería 2000 6000
Electrónica 1000 6000
Fotografía 3000 6000

Quiero algo más complejo, para trabajar sobre porcentajes de venta, pero en esencia esto es lo que no consigo hacer.

¿Podéis echarme una mano?

Gracias. Saludos,
  #2 (permalink)  
Antiguo 06/09/2011, 09:17
 
Fecha de Ingreso: agosto-2010
Mensajes: 2
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Sacar columna con totales en una query

para hacer eso

debes trabajar con subquery a nivel del select

select col1,col2,col3,( select sum(monto) from ventas a where a.id = b.id) total
from ventas b
where etc.....
  #3 (permalink)  
Antiguo 15/09/2011, 14:26
 
Fecha de Ingreso: noviembre-2007
Ubicación: Argentina
Mensajes: 134
Antigüedad: 17 años
Puntos: 3
Respuesta: Sacar columna con totales en una query

No necesariamente necesitas usar subconsultas.
Lo que necesitas es implementar funciones de suma pero utilizando "funciones analiticas".

Código SQL:
Ver original
  1. SELECT ACTIVIDAD,
  2. VENTAS,
  3. SUM (VENTAS) OVER() TOTAL_VENTAS
  4. SUM (VENTAS) OVER(PARTITION BY ACTIVIDAD) TOTAL_POR_ACTIVIDAD
  5. SUM (VENTAS) OVER(PARTITION BY TRUNC(FECHA, 'DAY'), ACTIVIDAD) TOTAL_POR_ACTIVIDAD_POR_SEMANA
  6. FROM NOMBRE_TABLA

sin subconsultas, sin "group by" obtienes lo que necesitas.

TOTAL_VENTAS: es el total de ventas y no se particiona por actividad
TOTAL_POR_ACTIVIDAD: es el total de ventas y se particiona por actividad
TOTAL_POR_ACTIVIDAD_POR_SEMANA: es el total de ventas discriminada por actividad y por semana (si fuese necesario).

Estos son ejemplos de lo que puedes hacer jugando con el "PARTITION BY" que esta dentro del OVER.

Espero que haya sido de utilidad.
Exitos en tu resolucion.
Mario.
__________________
Y venció David al filisteo con honda y piedra; e hirió al filisteo y lo mató, sin tener David espada en su mano.

Etiquetas: columna, query, tabla, totales
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 13:25.