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