Группировка запросов MySQL причудливым способом

#mysql #select

#mysql #выберите

Вопрос:

Мне нужен запрос mysql, который хочет это сделать

 initial data
id | from_id | to_id | route_id | price
1  | 360     | 415   | 204      | 100
2  | 372     | 458   | 204      | 100
3  | 395     | 372   | 204      | 100
4  | 395     | 372   | 204      | 100
5  | 395     | 372   | 205      | 100
6  | 395     | 372   | 204      | 100
7  | 395     | 458   | 210      | 100
8  | 395     | 458   | 210      | 100

result data
id | from_id | to_id | route_id | price
1  | 395     | 372   | 204      | 100      // because his periodicity is 3
2  | 395     | 458   | 210      | 100      // because his periodicity is 2
3  | 395     | 372   | 205      | 100
4  | 360     | 415   | 204      | 100
5  | 372     | 458   | 204      | 100
 

Есть что-то в этом роде

 SELECT * FROM myTable GROUP BY from_id,to_id,route_id
 

но я не знаю, как добавить КОЛИЧЕСТВО или МАКСИМУМ и УПОРЯДОЧИТЬ ПО
Спасибо

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

1. Посмотрите на это для синтаксиса SELECT оператора , а это для COUNT , это для MAX и это для ORDER BY

Ответ №1:

 SELECT 
      min( id ) FirstID, 
      from_id, 
      to_id, 
      route_id, 
      max(price) MaxPrice, 
      count(*) as Periodicity
   from 
      myTable 
   GROUP BY 
      from_id,
      to_id,
      route_id
 

Ваша конечная таблица идентификаторов больше похожа на последовательную, но это не соотносится с исходными данными и, похоже, не служит какой-либо цели в противном случае.