none
sumar con condicion RRS feed

  • Pregunta

  • tengo una consulta sql en la que quiero obtener media de unos valores

    SELECT  SUM(CASE WHEN tipohora = 9 THEN TiempoMq ELSE 0 END) AS Horas9,
    isnull(sum((preciotipohora)*tiempomq)/sum(tiempomq),0) as precioHora9,

    SUM(CASE WHEN tipohora =1  THEN TiempoMq ELSE 0 END) AS Horas1,
    sum(case when tipohora=1 then (preciohora*tiempomq)/(tiempomq) else 0 end) as precioHora1

    FROM partes

    quiero segun el campo tipohora, que me de el tiempo y la media de tiempo por precio


    Aran

    viernes, 27 de abril de 2018 9:59

Todas las respuestas

  • Hola aticnet:

    Sin analizar tu consulta, en principio lo que pides no es añadir una nueva columna que sea

    ,avg(mi columna que puede ser la expresion de mi case) as media,

    avg(mi columna que puede ser la expresion de mi otro case) as preciomedio

    from

    Si esto no te funciona, porque es posible, que la media sea erratica....lo he visto en otro post.

    Siempre puedes hacer SELECT AVG(P.MICOLUMNA) AS PRECIO, AVG(P.MICOLUMNA2) AS MEDIA FROM ( MI SELECT INICIAL ) AS P

    Un saludo

    viernes, 27 de abril de 2018 10:33
  • pero la media tendria que ser suma(tiempo*precio)/suma(tiempo)

    para sacar el precio medio de la hora


    Aran

    viernes, 27 de abril de 2018 12:56
  • Hola aticnet;

    Pero si lo has metido en una expresion de tabla, por ejemplo

    select * from (

    tu consulta ) y en tu consulta ya dispones de sum((preciotipohora)*tiempomq)), no te costará nada tener tambien (sum (tiempo), y realizas en la tabla de afuera la media.

    Creo que de todos modos, si no lo ves claro, a lo mejor tienes que postear la consulta que tienes.

    Un saludo

    sábado, 28 de abril de 2018 9:08