2016-06-27 5 views
0

У меня есть 10 + таблицы, у которых есть столбец «Сообщение об ошибке». Для каждого сообщения об ошибке есть уникальный идентификатор. Мне нужно написать скрипт, который возвращает 5 самых повторяющихся ошибок между всеми таблицами. Ниже приведен пример текущей структуры вместе с желаемым результатом.SQL COUNT GROUP by multiple tables

Столы

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 

В зависимости от вашей БД двигателя добавить либо limit 5 или top 5 или ROWNUM <= 5

+0

Спасибо! Это работает :) – LostInTheSauce