SQL-запрос ORDER BY по двум критериям не работает правильно - что я делаю не так? - PullRequest
0 голосов
/ 19 сентября 2018

Итак, я новичок в SQL, и я делаю этот запрос, который должен распечатать количество книг, написанных одним и тем же автором (сгруппированных по AuthorID, который является целым числом), упорядочить их в порядке убывания по количеству книги после этого заказа AuthorID, которые имеют одинаковое количество книг, написанных в возрастающем порядке самим AuthorID (целое число).Проблема в том, что по какой-то причине он печатает AuthorID в порядке убывания.Кто-нибудь может объяснить, что я делаю не так?

SELECT AuthorID, COUNT(*) 
       FROM book 
       GROUP BY AuthorID
       ORDER BY SUM(AuthorID) DESC, AuthorID ASC;

1 Ответ

0 голосов
/ 19 сентября 2018

Используйте значения, которые вы имеете в SELECT, чтобы выполнить то, что вам нужно.Сначала упорядочьте по COUNT (*) [количество книг] по убыванию, затем по по идентификатору authorID по возрастанию.

SELECT AuthorID, COUNT(*) 
       FROM book 
       GROUP BY AuthorID
       ORDER BY COUNT(*) DESC, AuthorID ASC;

Вы вводите совершенно новое значение, SUM(AuthorID) в вашей попытке, а не то, что выхочу.Если AuthorID - это значение INT, это будет выдавать что-то совершенно другое.Вы, вероятно, можете увидеть, что выводится, протестировав его, а затем увидеть, где вы ошиблись.

SELECT AuthorID, SUM(AuthorID) AS test_col, COUNT(*) 
       FROM book 
       GROUP BY AuthorID
...