2014-12-29 2 views
-1

Я с помощью MySql и у меня есть ...Запрос Mysql для подсчета количества столбцов?

orders 
+--------+---------+-------------+ 
| ID  | PRO_ID | CUS_ID  | 
+--------+---------+-------------+ 
| 1  | 1  | 2   | 
| 2  | 1  | 79   | 
| 3  | 1  | 6   | 
| 4  | 2  | 41   | 
| 5  | 2  | 28   | 
| 6  | 2  | 33   | 
| 7  | 3  | 2   | 
| 8  | 4  | 9   | 
| 9  | 4  | 23   | 
| 10  | 5  | 43   | 
| 11  | 5  | 45   | 
| 12  | 5  | 78   | 
| 13  | 5  | 67   | 
| 14  | 6  | 12   | 
| 15  | 6  | 95   | 

Как получить 5 топ PRO_ID и их количество. Пример

+---------+-------------+ 
| PRO_ID | COUNT  | 
+---------+-------------+ 
| 5  | 4   | 
| 1  | 3   | 
| 2  | 3   | 
| 4  | 2   | 
| 6  | 2   | 

мои заказы таблицы имеют 2 миллионов строк, мне нужно запрос быстрее. Спасибо за любую помощь!

ответ

1

Применение индексации для этой конкретной области и продолжайте с этим вопросом .... я надеюсь, что это даст вам лучшую производительность

select PRO_ID,count(PRO_ID) as prod_count 
from orders 
group by PRO_ID 
order by prod_count desc 
limit 5 
0
select PRO_ID,count(PRO_ID) as count 
from orders 
group by PRO_ID 
order by count desc 
limit 5 

Если запрос кажется замедлить то попробуйте добавить индекс на вашем столе

+0

Я думаю, что OP нуждается в этом в порядке count.I думаю, что именно он пытается объяснить в желаемом выходе –

0

Вы можете сделать так:

select PRO_ID, COUNT(*) as total 
from test 
group by PRO_ID 
ORDER BY total desc, PRO_ID 
limit 5 

здесь fiddle

Смежные вопросы