2014-12-17 5 views
0

У меня есть запросSQL объединить AVG и RANK

VariableWastage 
      AS (SELECT ID , 
         SCRAPVAR , 
         COUNT(RECCODE) AS [COUNT] , 
         RANK() OVER (PARTITION BY ID ORDER BY COUNT(RECCODE) DESC) AS [RANK] 
       FROM  RECIPE 
       WHERE ITEMTYPE != 2 
         AND CAST(CAST(SCRAPVAR AS FLOAT) AS INT) != 0 -- excluding SCRAPVAR 0 
GROUP BY    ID , 
         SCRAPVAR 
      )SELECT * FROM VariableWastage 

, которая дает результаты

enter image description here

Где выделяются строки как я произвожу одну строку для каждого элемента и получить значения AVG SCRAPVAR между дубликаты? Таким образом, в основном в наборе результатов я бы ожидал увидеть

ABR001 1.025 
ABR002 1.025 
ABR003 1.025 

Я просто хочу, чтобы AVG выход RANK в основном ... Спасибо!

+0

Так что вы хотите, чтобы фильтровать текущий набор результатов, чтобы получить 3 записи вы показали? –

+0

Всего три записи или все записи? – SMA

+0

Я хочу, чтобы все результаты, но где я получаю дубликаты, объединяют их и avg результат scrapvar между обманами ... – jhowe

ответ

0

Найден ответ ... просто сделать AVG в группе по ...

VariableWastage 
       AS (SELECT ID , 
          SCRAPVAR , 
          COUNT(RECCODE) AS [COUNT] , 
          RANK() OVER (PARTITION BY ID ORDER BY COUNT(RECCODE) DESC) AS [RANK] 
        FROM  RECIPE 
        WHERE ITEMTYPE != 2 
          AND CAST(CAST(SCRAPVAR AS FLOAT) AS INT) != 0 -- excluding SCRAPVAR 0 
    GROUP BY    ID , 
          SCRAPVAR 
       )SELECT ID, AVG(CAST(SCRAPVAR AS DECIMAL(4, 2))) as SCRAPVAR, COUNT, RANK FROM VariableWastage GROUP BY ID, COUNT, RANK