2015-01-29 3 views
1

Я хочу спросить вас, если его правильно, если я использую это ORDER BY в SELECT COUNT (*)SELECT COUNT (*) с ORDER BY

Orginal: SELECT count(*) AS cnt FROM players WHERE totalpoints>?  

Modified: SELECT count(*) AS cnt FROM players WHERE totalpoints>? ORDER BY timeontheserver DESC  

В Orginal запроса он выдает игрокам данные " ранг "в базе данных.

Но я только заметил, что некоторые «игроки» имеют одинаковое количество очков, и они получают обратную сторону. Так что это должно дать игроку большее количество «timeontheserver» лучшего «ранга». Надеюсь, вы могли бы это понять, спасибо.

+1

Timontheserver не находится в вашем предложении SELECT, поэтому два запроса будут иметь идентичный выход; а именно, количество записей от «игроков», где «totalpoints» больше, чем '?' – JNevill

+3

, ваш счет (*) вернет только одно значение ... что нужно сортировать? ... Теперь, если вы возвращали имя игрока с точками >? с подсчетом, то порядок имеет смысл. – xQbert

+0

SQL применяет операцию «Сортировать по» в конце после завершения всех агрегаций. Поэтому я не думаю, что это повлияет на порядок вашей оценки, но порядок отображения результатов может быть изменен с помощью 'order by' – SoulTrain

ответ

1

COUNT (*) предоставит вам номер, вы хотите сделать группу в поле, которое вы заказываете, чтобы получить то, что хотите.

SELECT timeontheserver ,count(*) AS cnt FROM players 
WHERE totalpoints>? GROUP BY timeontheserver ORDER BY timeontheserver DESC