2016-06-27 5 views
0

나는 10 개의 테이블 모두에 '오류 메시지'열이 있습니다. 각 오류 메시지마다 고유 한 ID가 있습니다. 나는 모든 테이블 사이에 상위 5 개의 가장 반복되는 오류를 반환하는 스크립트를 작성해야합니다. 다음은 원하는 결과와 함께 현재 구조의 예입니다.SQL COUNT GROUP BY 여러 테이블

테이블

Table 1 
**Error Message   
    Mes 1    
    Mes 2     
    Mes 3      

Table 2 
**Error Message  
    Mes 1 
    Mes 2    
    Mes 3    
    Mes 4 
    Mes 4 
    Mes 4 
    Mes 4      

Table 3 
**Error Message       
    Mes 5 
    Mes 1     
    Mes 6 
    Mes 2     

원하는 결과

**Error Message  Error Count**  
    Mes 4    4 
    Mes 1    3 
    Mes 2    3 
    Mes 3    2 
    Mes 5    1 

답변

4
select errMsg, count(*) as errCnt 
from 
(
    select errMsg from table1 
    union all 
    select errMsg from table2 
    union all 
    select errMsg from table3 
    ... 
) tmp 
group by errMsg 
order by count(*) desc 

당신의 DB 엔진에 따라 추가하거나 limit 5 또는 top 5 또는

+0

ROWNUM <= 5 감사합니다! 이 작품 :) – LostInTheSauce