Я потратил много времени на поиск этого, пожалуйста, дайте мне знать, если есть дубликаты.
Мне нужно написать групповой запрос, который возвращает категории записей со счетчиком категории каждого типа.Примерно так:
select categorynum, count(*) from tbl group by categorynum;
Пока все хорошо.Теперь мне нужно определить, какой% от общего количества каждой категории занимает.Лучшее, что я придумала, это то, что мне не нравится, оно кажется грязным:
select categorynum, count(*), count(*)/(select count(*) from tbl) from tbl group by categorynum;
Это работает, но меня это так раздражает.База данных, которую я использую, совместима с синтаксисом Postgres, и count(*)
для таблицы действительно быстрая, поэтому при выполнении count(*)
для таблицы нет большой скорости, хотя я хотел бы написать лучший SQL, если это возможно.
Так есть ли лучший способ написать это?Я часто сталкиваюсь с такой ситуацией, поэтому я хотел бы правильно написать свои запросы.