проблема с запросом: выбрать кол-во записей в базе, сумма некоторых полей которых бол

Spear

почемучка
проблема с запросом: выбрать кол-во записей в базе, сумма некоторых полей которых бол

Здравствуйте,
честное слово - пытался сам решить свою проблему на протяжение нескольких часов но так ничего и не получилось.
Очень прошу, помогите - работа на месте стоит :(

есть такая таблица в базе данных:
(в упрощенном виде)

id | rate | cat

Это таблица в которой записываются голоса пользователей за лучшие фото.

Мне нужно сделать вот что: вывести МЕСТО, на котором находится определенная фотография.

Место определяется по сумме всех оценок, то есть полей rate.

Грубо говоря мне нужно такой запрос (как это пытался сделать я, но ничего не получается..)

выбрать COUNT полей ID, чья SUM(id) больше чем SUM(id) текущего изображения.

Ну и получается что полученное число это кол-во фото, которые выше рейтингом чем это фото, оответственно придавляю единицу и получаю место, на котором фото находится в рейтинге.

select count(id) as infront from photo_voice where SUM(rate) > (select sum(rate) from photo_voice where id='7')

что-то вроде этого.. только, конечно, мой запрос не работает и, я так полагаю, не должен работать.
Очень прошу вас - помогите решить эту проблему
 

zerkms

TDD infected
Команда форума
HAVING вместо WHERE
и проверить что версия mysql > 4.1
 

Spear

почемучка
zerkms
чесслово - не понимаю я как запрос составить :(
 

zerkms

TDD infected
Команда форума
select count(id) as infront from photo_voice HAVING SUM(rate) > (select sum(rate) from photo_voice where id='7')

должен работать
 

Spear

почемучка
сам запрос выполняется, но считается кол-во всех записей, то есть не учитывается

SUM(rate) > (select sum(rate) from photo_voice where id='7')

:(
 

Spear

почемучка
не полчается :(
если делаю группировку то просто выводится опять же кол-во рядов в таблице но сгруппированное по АЙДИ, то есть вместо 20. скажем, 7 :(

-~{}~ 26.01.06 17:25:

народ, чесслово - немогу понять как реализловать. Хелп

-~{}~ 26.01.06 23:12:

до сих пор не разобрался :( :( :(
 

whirlwind

TDD infected, paranoid
если я правильно понял задачу, то оттолкнуться от нижеследующего

select sum(rate),count(id),cat,sum(rate)/count(id) as rate from t group by cat order by rate desc,count limit 2

-~{}~ 27.01.06 16:08:

>если делаю группировку то просто выводится опять же кол-во рядов в таблице но

зачем вам кол-во столбцов? для того что бы посчитать. ничего считать в группировке вы не можете. в группировке вы указываете какие поля оставлять после сворачивания таблицы агрегирующими функциями. агрегация будет проходить в пределах, указанных в group by. т.е. если к примеру вы укажите group by cat, то результирующая таблица будет содержать результаты агрегирующих функций по каждой cat. Если вообще убрать cat из запроса, то результатом агрегирующих функций будет всего одна строка, соответствующая подсчетам по всей таблице.

надеюсь это поможет понять, что такое группировка
 
Сверху