2014-01-22 2 views
0

следующий запрос:MySQL Group результаты

SELECT COUNT(*) AS count, items.category, customers.sector 
FROM customers 
LEFT JOIN items ON items.customer_id = customers.id 
GROUP BY items.category, customers.sector 
ORDER BY customers.sector ASC 

дает мне этот результат:

| count |   category  | sector | 
|-------|-----------------------|--------------| 
| 3 | A-Frames & Trolleys | Automotive | 
| 4 |  Suction Mounts | Automotive | 
| 1 |   Hand Cups  | Automotive | 
| 103 |  Glazing Tools | Construction | 
| 2 | A-Frames & Trolleys | Construction | 
| 2 |  Suction Mounts | Construction | 
|_______|_______________________|______________| 

Я хочу, чтобы колонка сектор должен быть уникальным и показать категорию с наибольшим кол например:

| count |   category  | sector | 
|-------|-----------------------|--------------| 
| 4 |  Suction Mounts | Automotive | 
| 103 |  Glazing Tools | Construction | 
|_______|_______________________|______________| 

С благодарностью

+0

Так что вы хотите 'MAX (COUNT())' 'для каждого sector'? – Kermit

+0

да, это то, что я после –

ответ

2

Я думаю, что самый простой способ сделать это substring_index()/group_concat() трюк:

select max(count) as `count`, 
     substring_index(group_concat(category order by count desc), ',', 1) as category, 
     sector 
from (SELECT COUNT(*) AS count, i.category, c.sector 
     FROM customers c LEFT JOIN 
      items i 
      ON i.customer_id = c.id 
     GROUP BY i.category, c.sector 
    ) t 
group by c.sector; 
Смежные вопросы