У меня есть следующая таблица:
| col1 | col2 | col3 |
| 1 | 1.1 | 9.3 |
| 2 | 7.9 | 1.3 |
| 3 | 3.7 | 7.3 |
| 4 | 9.0 | 5.7 |
Мне нужно упорядочить строки, используя взвешенную сумму col2
и col3
. Это легко сделать следующим образом:
select * from mytable order by (0.8*col2 + 0.2*col3)
Теперь я хочу сделать почти то же самое, единственное отличие состоит в том, что мне нужно заменить фактические значения в col2
и col3
позицией в упорядоченном списке всех значений в столбце. Например, во втором столбце должны быть сделаны следующие замены:
(1.1 -> 1, 3.7 -> 2, 7.9 -> 3, 9.0 -> 4)
Кто-нибудь знает, есть ли простой способ создать запрос, который бы это сделал? Другими словами, я хотел бы иметь что-то подобное:
select * from mytable order by (0.8*modified(col2) + 0.2*modified(col3))
где функция modified
заменяет значение на его позицию в упорядоченном списке всех значений из столбца.