2014-02-08 3 views
0
가 MS 쿼리를 사용하여, 다음 코드는 "판매 가격"에 대한 모드를 발견 및 Excel에 표시, 작동 2007

MS 쿼리 -에 1 개 이상의 필드

(Connection code here has been omitted) 
SELECT TOP 1 "Sales Price" AS "SPrice Mode", COUNT(*) Frequency 
FROM "Sales Table" WHERE ("Date of Sale" BETWEEN ? AND ?) AND (City LIKE ?) 
GROUP BY "Sales Price" 
ORDER BY Frequency DESC 
Enter Start Date  Enter END Date Enter City 

싶습니다

의 모드를 계산 "판매 가격"과 동일한 "판매 테이블"에있는 두 개의 다른 필드, "단위당 가격"및 "SF 당 가격"에 대한 모드도 찾을 수 있도록이 쿼리를 수정하십시오. 또한 사용자가 매개 변수를 한 번만 입력하면됩니다. 인터넷 검색 후 솔루션을 찾을 수 없었습니다. UNION 및 JOIN을 사용하여 변형을 시도했지만 아무 소용이 없습니다. 어떤 도움이나지도라도 부탁드립니다. 미리 감사드립니다.

+0

당신이 "모드"가 무엇을 의미합니까? –

+0

가장 자주 발생하는 통계 모드입니다. 예를 들어, 목록 (1, 1, 2, 2, 2, 3, 3, 4)에서 숫자 "2"는 빈도 4 인 모드입니다. – GDaniels

답변

0

창 기능을 사용하여 여러 열에 대한 모드를 가져올 수 있습니다. 다음 쿼리에서 가장 안쪽의 쿼리는 각 값의 수를 계산합니다. 다음 하위 쿼리의 최대 수를 가져오고 가장 바깥 쪽 쿼리는 최대 카운트에서 변수의 값을 가져옵니다

select max(case when cnt_sp = max_cnt_sp then "Sales Price" end) as mod_Sales_Price, 
     max(case when cnt_ppu = max_cnt_ppu then "Price Per Unit" end) as mod_Price_Per_Unit, 
     max(case when cnt_ppsf = max_cnt_ppsf then "Price Per SF" end) as mod_Price_Per_SF  
from (select st.*, 
      max(cnt_sp) over() as max_cnt_sp, 
      max(cnt_ppu) over() as max_cnt_ppu, 
      max(cnt_ppsf) over() as max_cnt_ppsf 
     from (select st.*, 
        count(*) over (partition by "Sales Price") as cnt_sp, 
        count(*) over (partition by "Price Per Unit") as cnt_ppu, 
        count(*) over (partition by "Price Per SF") as cnt_ppsf 
      from "Sales Table" st 
      ) st 
    ) st 
관련 문제