Страницы

Поиск по вопросам

среда, 12 декабря 2018 г.

Помощь с sql запросом

Есть таблица table1
id city 1 Москва 2 Воронеж 3 Самара
Есть таблица table2
id id_city rating 1 1 22 2 1 66 3 1 95 4 2 12 5 2 37 6 2 13 7 3 68 8 3 54 9 3 27
Связь по полям table1.id = table2.id_city Примерный алгоритм: Берем 1-ый город и выбираем у него самый большой рейтинг. Затем берем 2-ой город и выбираем у него самый большой рейтинг. Тоже самое с 3-им. Затем все повторяется, начинаем с 1-ого города. Необходимо сделать такой запрос, чтобы результат был следующим:
id_city rating 1 95 2 37 3 68 1 66 2 13 3 54 1 22 2 12 3 27


Ответ

set @pk1 =''; set @rn1 =1;
SELECT id_city, rating
FROM (SELECT id_city, rating, @rn1 := if(@pk1=id_city, @rn1+1,1) as rowNumber, @pk1 := id_city FROM (SELECT id_city, rating FROM table2 ORDER BY id_city, rating desc ) A ) B order by rownumber, id_city
Решение можно проверить тут http://sqlfiddle.com/#!9/3683a4/5

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

Отправить комментарий