2011-04-21 5 views
0

주문 세부 정보가있는 테이블이 있습니다. 특정 항목에 대한 평균 속성을 선택할 수 있기를 원합니다.평균 열 값 선택

예를 들어 "항목 a"를 선택하면 이제 "항목 a"의 평균 색상을 찾습니다. 고장 주문 10 개 "항목에"의 주문과 색상이 있다면 다음과 같이

4 - 블랙
2 - 블루
2 - 빨간색
1 - 오렌지
1 - 흰색

"검은 색"을 반환하고 싶습니다. 그럴 수있는 진술이 있습니까?

또한 예를 들어 "항목 a"의 마지막 3 개의 주문에 1 대신에 2의 가중치를 주면 평균을 계량 할 수 있습니까? 따라서 마지막 3 개의 주문이 모두 황색 인 경우 본질적으로 6로 계산합니까?

+0

여기 평균 또는 최대를 찾으십니까? 귀하의 예를 보면 '검은 색'이 '가장 일반적인'(즉, 최대) 값인 것으로 보입니다. –

+0

@Joe Stefanelli 평균값, 중앙값 및 모드의 세 가지 유형이 있습니다. 로저가 모드를 찾고있어. – Neil

답변

1

당신 색상에 group by 할 수있는 다음 첫 번째 행을 선택

select color 
from OrderLines 
where ItemId = 'item a' 
group by 
     color 
order by 
     count(*) desc 
limit 1 

당신은 하위 쿼리와 일부 행을 높은 가중치를 줄 수 있습니다. 이것은 마지막 3 개의 주문에 더 높은 무게를줍니다 :

select color 
from (
     select o1.color 
     ,  case when 
       (
       select count(*) 
       from OrderLines o2 
       where o1.item = o2.item 
         and o1.OrderDt < o2.OrderDt 
       ) < 3 then 2 else 1 end as weight 
     from OrderLines o1 
     ) 
where Item = 'item a' 
group by 
     color 
order by 
     sum(weight) desc 
limit 1