es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Sumando los valores de algunas filas y añadiéndolos al valor de otras filas.

Necesito tu ayuda en una consulta SQL donde, en la tabla de ejemplo que se muestra a continuación, solo necesito dos filas que no tengan una bandera Requerida establecida en Y. El valor de estas dos filas debe ser (Precio * % Cargado) + (suma de (Precio)*(% Cargado) de filas que tienen la bandera Requerida establecida en Y)

Nombre Precio % Cargado Requerido
Cama King 10000 120
Cama Queen 24000 140
Entrega 240 140 Y
Cargos de Portero 20 20 Y

Mi resultado debería verse algo así

Nombre Valores
Cama King (10000 * 120)+(240 * 140)+(20 * 20)|
Cama Queen (24000 * 140)+(240 * 140)+(20 * 20)

Ni siquiera sé por dónde empezar. Háganme saber si se necesita alguna información. Gracias de antemano.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para lograr el resultado deseado, podemos utilizar una subconsulta para calcular la suma de (Precio) * (% Gravado) para las filas que tienen la bandera Requerido establecida en Y, y luego agregarla al cálculo de (Precio * % Gravado) para las dos filas donde la bandera Requerido no está establecida en Y. Aquí hay un ejemplo de consulta SQL que debería funcionar:

    SELECT Nombre, (Precio * % Gravado) + 
                  (SELECT SUM(Precio * % Gravado) FROM ejemplo WHERE Requerido = 'Y') AS Valores 
    FROM ejemplo 
    WHERE Requerido <> 'Y' 
    LIMIT 2;
    

    Explicación:

    • Seleccionamos las 2 filas donde la bandera Requerido no está establecida en ‘Y’ usando la cláusula WHERE.
    • Para cada una de estas 2 filas, calculamos el valor multiplicando las columnas Precio y % Gravado juntas, y luego sumando el resultado a la suma de (Precio * % Gravado) para las filas que tienen la bandera Requerido establecida en Y. Hacemos esto utilizando una subconsulta en la instrucción SELECT.

    • Finalmente, limitamos la salida para mostrar solo las primeras 2 filas, ya que eso es todo lo que necesitamos.

    ¡Espero que esto ayude! Hazme saber si tienes alguna pregunta.

Comments are closed.