none
Promediar resultados RRS feed

  • Pregunta

  • hola! de antemano gracias por contestar

    veran... tengo una tabla en donde se califican proveedores por la cantidad de entregas, esta tabla lleva el nombre "Score" y guarda la calificacion del proveedor para cierto mes, hay diferentes areas las cuales identifico con un codigo de area (IDArea) los cuales pueden ser S1, B1 o G1, el score pertenece a un proveedor por lo tanto tiene el codigo del proveedor (IDSupplier), este proveedor puede dar servicio a varias areas o solo a una, el score tiene una fecha de captura...

    por lo cual mi tabla quedaria asi

    Score
    IdScore
    Performance
    IdArea
    IdProveedor
    CaptureDate

    necesito un query de esta tabla que me traiga los resultados por mes de cierto proveedor para el area "S1" y "G1" (B1 no estara involucrada en este proceso)... es decir que aparesca el promedio del proveedor dependiendo de los resultados que le dio S1 y G1

    gracias

    saludos!!

    viernes, 19 de agosto de 2011 20:21

Respuestas

  • no se si te entiendo bien, pero vamos

    Select performance,idproveedor, convert(varchar(6),capturedate,112) mes, avg(score)

    from tabla

    group by performance,idproveedor, convert(varchar(6),capturedate,112)


    Comparte lo que sepas, aprende lo que no sepas (FGG) http://www.portalsql.com
    viernes, 19 de agosto de 2011 20:46
    Moderador
  • La verdad pense que solo yo tenia problemas para entender lo que pides Arthuro, pero veo que no soy el único, como consejo para la proxima: más codigo y menos "verbos", es más util ayudarte con datos de prueba, la salida esperada y las estructuras de datos, la solución que plantea Miguel la veo acertada, solo agregale la condicion Where IDArea IN ('S1','G1').

     


    "El talento es una disciplina tenaz y una larga paciencia"  Gustave Flaubert

     Email: info@geohernandez.com Blog: geeks.ms/blogs/ghernandez

     

    • Marcado como respuesta Arthuro Zerda viernes, 19 de agosto de 2011 22:08
    viernes, 19 de agosto de 2011 21:09
  • Arthuro,

    Solo agregale el filtro para incluir las areas deseadas.

    select idsupplier, ((year(capturedate) * 100) + month(capturedate)) as mes, avg(performance)
    from scores
    where idarea in ('S1', 'B1')
    group by idsupplier, ((year(capturedate) * 100) + month(capturedate));

     


    AMB

    Some guidelines for posting questions...

    • Marcado como respuesta Arthuro Zerda viernes, 19 de agosto de 2011 22:02
    viernes, 19 de agosto de 2011 21:49

Todas las respuestas

  • no se si te entiendo bien, pero vamos

    Select performance,idproveedor, convert(varchar(6),capturedate,112) mes, avg(score)

    from tabla

    group by performance,idproveedor, convert(varchar(6),capturedate,112)


    Comparte lo que sepas, aprende lo que no sepas (FGG) http://www.portalsql.com
    viernes, 19 de agosto de 2011 20:46
    Moderador
  • hola miguel! gracias por responder... veras quiero obtener el avg del performance de todos los registros de un proveedor en el area G1 y S1 en un mes depertminado

    saludos

    viernes, 19 de agosto de 2011 21:08
  • La verdad pense que solo yo tenia problemas para entender lo que pides Arthuro, pero veo que no soy el único, como consejo para la proxima: más codigo y menos "verbos", es más util ayudarte con datos de prueba, la salida esperada y las estructuras de datos, la solución que plantea Miguel la veo acertada, solo agregale la condicion Where IDArea IN ('S1','G1').

     


    "El talento es una disciplina tenaz y una larga paciencia"  Gustave Flaubert

     Email: info@geohernandez.com Blog: geeks.ms/blogs/ghernandez

     

    • Marcado como respuesta Arthuro Zerda viernes, 19 de agosto de 2011 22:08
    viernes, 19 de agosto de 2011 21:09
  • podria usar algo asi...

    SELECT IdSupplier,NomSupplier, AVG(convert(int,((convert(money,Deliveries) -
    		(convert(money,Delays) +convert(money,Advance)))/
    		 convert(money,Deliveries))*100)) AS Performance
    FROM Scores
    GROUP BY IdSupplier,NomSupplier
    

    pero aun me trairia todas los resultados de todas las areas =/

    viernes, 19 de agosto de 2011 21:16
  • Arthuro,

    Solo agregale el filtro para incluir las areas deseadas.

    select idsupplier, ((year(capturedate) * 100) + month(capturedate)) as mes, avg(performance)
    from scores
    where idarea in ('S1', 'B1')
    group by idsupplier, ((year(capturedate) * 100) + month(capturedate));

     


    AMB

    Some guidelines for posting questions...

    • Marcado como respuesta Arthuro Zerda viernes, 19 de agosto de 2011 22:02
    viernes, 19 de agosto de 2011 21:49