Как запросить, чтобы получить ранг строки? - PullRequest
1 голос
/ 17 марта 2011

Я создаю систему ранжирования фотографий. По сути, у меня есть три основных поля: выиграл, проиграл, сыграл как надо.

Допустим, у меня есть три фотографии

Photo  Won  Lost  Played
-------------------------
A      3    2     5
B      1    4     5
C      3    2     5

Я собираюсь написать запрос, чтобы получить рейтинг каждой фотографии. Проблема в том, что фото A и фото C имеют одинаковую запись. Как сделать запрос, который возвращает 1 для фото A и C?

Photo  Won  Lost  Played  Rank
-------------------------------
A      3    2     5       1
C      3    2     5       1
B      1    4     5       ?

Добавлено 3/17/11

Я немного изменил структуру таблицы

так что теперь у меня есть поле «voice_ratio» вместо «сыграно». «voice_ratio» содержит значение «poll_win» / «voice_lose».

поэтому таблица должна быть пересмотрена как

Photo   Won   Lost   Ratio
A       3     2      1.5 
B       1     4      0.25 
C       3     2      1.5

Что я хочу сделать:

  1. запросите только «Фото А» и получите ранг.
  2. запросить все записи и отобразить ранг каждой записи.

Я могу сделать # 2 по следующему запросу.

"select * from table order by ratio desc"

но опять проблема. Фото А и С имеют одинаковое соотношение. Мне нужно сделать их обоих рангом № 1.

Ответы [ 2 ]

1 голос
/ 17 марта 2011

не проверено

SELECT *
FROM photos
ORDER BY (played/lost)

Я думаю, что это возвращает:

Photo A // rank1
Photo C // rank1
Photo B // rank2
1 голос
/ 17 марта 2011

если вы имеете в виду «вернуть 1» в качестве возврата 1 записи рейтинга? -> не тестировалось, однако может иметь комбинацию GROUP BY и GROUP_CONCAT, как это:

SELECT Won, Lost, Played, GROUP_CONCAT( photo, ', ' ) AS photos
FROM your_table
GROUP BY Won, Lost, Played
...