За последние 24 часа нас посетил 17891 программист и 1651 робот. Сейчас ищут 1446 программистов ...

хитрая выборка из таблицы

Тема в разделе "MySQL", создана пользователем RuZ, 16 янв 2010.

  1. RuZ

    RuZ Активный пользователь

    С нами с:
    18 мар 2009
    Сообщения:
    4
    Симпатии:
    0
    есть таблица

    Код (Text):
    1. |judge_id | photo_id| rating|
    2. |6|38|2
    3. |6|41|2
    4. |6|44|4
    5. |10|38|5
    6. |10|44|0
    7. |11|42|0
    8. |11|41|3
    9. |11|42|4
    10. |15|38|2

    Нужно выбрать из неё photo_id и их рейтинг (среднее значение оценок выставленное всеми судьями, при этом если в raiting 0, то этого судью учитывать не нужно). Желательно ещё отсортировать всё это в порядке убывания рейтинга.
     
  2. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Дампы в таком случае надо выкладывать.
     
  3. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    [sql]SELECT `photo_id`, SUM(`rating`)/COUNT(`judge_id`) as stat FROM `tst3` WHERE `rating`!=0 GROUP BY `photo_id` ORDER BY stat DESC[/sql]
    Или еще лучше (с подачки Devzirom):
    [sql]SELECT `photo_id`, AVG(`rating`) as stat FROM `tst3` WHERE `rating`!=0 GROUP BY `photo_id` ORDER BY stat DESC[/sql]

    Код (Text):
    1. photo_id    stat
    2. 44  4.0000
    3. 42  4.0000
    4. 38  3.0000
    5. 41  2.5000
    P.S.
    [sql]id select_type table type possible_keys key key_len ref rows Extra
    1 SIMPLE tst3 ALL NULL NULL NULL NULL 9 Using where; Using temporary; Using filesort[/sql]