Сложный запрос Mysql, группировка с ограничением

#mysql #sql #select #subquery #limit

#mysql #sql #выберите #подзапрос #ограничение

Вопрос:

У меня есть следующая таблица

store_visits: (store_id, city_id, date, visits, ...)

Я хочу выбрать максимум 5 магазинов, упорядоченных по посещениям.

 SELECT X.* 
  FROM (
    SELECT 
      store_id, SUM(visits) as sum_visits FROM store_visits
    WHERE 
      (date <= '2014-06-28' AND  date >= '2014-06-27') 
    AND 
      store_visits.city_id = 2 
    GROUP BY 
      store_id 
    ORDER BY 
      sum_visits desc
  ) X 
LIMIT 5
  

Мне было интересно, есть ли способ улучшить запрос, чтобы исключить временную таблицу и сортировку файлов.

Ответ №1:

Попробуйте это:

 SELECT store_id, SUM(visits) AS sum_visits 
FROM store_visits sv
WHERE sv.date <= '2014-06-28' AND sv.date >= '2014-06-27' AND sv.city_id = 2 
GROUP BY store_id 
ORDER BY sum_visits DESC LIMIT 5
  

Комментарии:

1. Я не думаю, что это устранит временную таблицу и сортировку файлов