MySQL - Aprovechar valores sum() anteriores

 
Vista:
sin imagen de perfil

Aprovechar valores sum() anteriores

Publicado por antoni (21 intervenciones) el 08/04/2015 22:59:23
Buenas noches:

Quisiera saber como aprovechar cálculos anteriores pero dentro de la misma sentencia, por ejemplo:

select sum(cantidad * pecio) as bruto, sum(cantidad * precio * descuento / 100) as descuento from ventas_lineas;

en la anterior orden me gustaría poder ahorrarme en el segundo sum() (descuento) el tener que multiplicar otra vez cantidad * precio, aprovechando que ya lo calculé en el sum() primero (bruto). Entonces el sum() as descuento sería algo así como:
... sum( variable_u_otra_solucion * descuento / 100) as descuento...

Gracias por vuestros consejos
Saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Aprovechar valores sum() anteriores

Publicado por antoni (21 intervenciones) el 09/04/2015 19:59:01
hola,
la razón de querer aprovechar cálculos anteriores es que a continuación con el bruto menos el descuento se formará la base a la cual aplicar el iva y el recargo de equivalencia, para después sumar estos impuestos a la base y obtener el neto a pagar,
la secuencia sería
a) calcular el bruto: cantidad * precio
b) sobre el bruto calcular un posible descuento
c) al bruto restar el descuento para obtener la base imponible
d) a la base aplicar el % iva y obtener la cuota de iva
e) a la base aplicar el % rec. equivalencia y obtener la cuota de rec. equivalencia
f) a la base sumar las cuotas de iva y de recargo para obtener el neto a pagar
y en el pie de la factura desglosar cada uno de estos conceptos.

y claro, en cada uno de estas nuevas operaciones he de volver a recalcular cantidad * precio, y el descuento etc.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Alberto

Aprovechar valores sum() anteriores

Publicado por Alberto (26 intervenciones) el 09/04/2015 21:19:47
Hola...

Y ya intentaste con esto?

SELECT SUM(cantidad * pecio) AS bruto, SUM(bruto * descuento / 100) AS descuento FROM ventas_lineas;

Se que es muy sencillo pero en ocasiones lo simple suele ser la mejor solución.

Cualquier duda y/o comentario, aquí estamos. Suerte!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Aprovechar valores sum() anteriores

Publicado por antoni (21 intervenciones) el 10/04/2015 07:14:18
Hola...

Gracias Alberto por ayudar.
Si, ya probé con
SELECT SUM(cantidad * pecio) AS bruto, SUM(bruto * descuento / 100) AS descuento FROM ventas_lineas;
eso fue lo primero que intenté por ser lo más lógico y sencillo.

Pero como bruto no es ningún campo de la tabla ventas_lineas, pues me da error : field no exists ( o algo así, ahora no lo tengo delante).

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Alberto

Aprovechar valores sum() anteriores

Publicado por Alberto (26 intervenciones) el 10/04/2015 18:54:29
Porque no intentas con la consulta que te proporciono el compañero Hugo QN, sino aquí le seguiremos buscando solución a tu problema.

Suerte!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Aprovechar valores sum() anteriores

Publicado por antoni (21 intervenciones) el 10/04/2015 19:58:09
Hola Alberto,
Tal como ya lo tenía me funciona pero además necesita una sentencia más larga, el ejemplo quedaría así:

SELECT SUM(cantidad * pecio) AS bruto, SUM(cantidad * precio * dto / 100) as descuento, SUM((cantidad*precio)-(cantidad*precio*dto/100)) as base FROM ventas_lineas;

no te preocupes más, lo dejaré así
Muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 17
Ha aumentado su posición en 4 puestos en MySQL (en relación al último mes)
Gráfica de MySQL

Aprovechar valores sum() anteriores

Publicado por Hugo QN (32 intervenciones) el 09/04/2015 21:46:52
hola antoni, aqui tienes espero te ayude.

SELECT bruto, (bruto * descuento / 100) AS descuento,
FROM (SELECT SUM(cantidad * pecio) AS bruto, SUM(descuento) AS descuento
FROM ventas_lineas) Datos;


saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Aprovechar valores sum() anteriores

Publicado por antoni (21 intervenciones) el 10/04/2015 19:59:52
Gracias Hugo por tu ayuda
la he probado sin éxito

al final lo dejaré como le acabo de explicar a Alberto
Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Alberto

Aprovechar valores sum() anteriores

Publicado por Alberto (26 intervenciones) el 10/04/2015 20:04:06
Otra opción que se me ocurre es que crees un SP ^^!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Aprovechar valores sum() anteriores

Publicado por antoni (21 intervenciones) el 11/04/2015 18:21:23
Hola Alberto
No entiendo que quiere decir SP^^.....
Pero es igual no te molestes mas
Gracias por todo

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Alberto

Aprovechar valores sum() anteriores

Publicado por Alberto (26 intervenciones) el 11/04/2015 22:41:12
SP, significa un Stored Procedure, dentro de el puedes declarar dos consultas, una consulta tendrá el resultado Bruto el cual lo colocarías dentro de una variable, mientras que la otra consulta tendrá el resto de lo que necesitas pero pasando como parámetro la variable para que haga la multiplicación.

Cualquier duda y/o comentario, aquí estamos. Suerte!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil

Aprovechar valores sum() anteriores

Publicado por antoni (21 intervenciones) el 12/04/2015 12:58:40
ok,
es buena solución, pero son dos pasos, así que por ahora lo dejaré como ya te dije.

Muchas gracias
Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 17
Ha aumentado su posición en 4 puestos en MySQL (en relación al último mes)
Gráfica de MySQL

Aprovechar valores sum() anteriores

Publicado por Hugo QN (32 intervenciones) el 17/04/2015 21:18:21
Hola Antoni, que raro que no funcione o es que te sale error por lo que hiaba dejado una coma antes de FROM?

aqui tienes los 3 campos que quieres calcular deberia funcionar bien.

SELECT bruto,
bruto * descuento / 100 AS descuento,
bruto - (bruto * descuento /100) AS base
FROM (SELECT SUM(cantidad * pecio) AS bruto, SUM(descuento) AS descuento
FROM ventas_lineas) Datos;

saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar