Как использовать count и группу с помощью одного и того же оператора select

У меня есть запрос на выбор sql, у которого есть группа. Я хочу считать все записи после оператора group. Есть ли способ для этого непосредственно из sql? Например, имея таблицу с пользователями, я хочу выбрать разные города и число пользователей total

select town, count(*) from user
group by town

Я хочу иметь столбец со всеми городами, а другой - с количеством пользователей во всех строках.

Примером результата для трех городов и 58 пользователей является:

Town         Count
Copenhagen   58
NewYork      58
Athens       58

Ответ 1

Это сделает то, что вы хотите (список городов с количеством пользователей в каждом):

select town, count(town) 
from user
group by town

Вы можете использовать большинство агрегатные функции при использовании GROUP BY.

Обновить (после изменения вопроса и комментариев)

Вы можете объявить переменную для количества пользователей и установить ее на количество пользователей, а затем выбрать с ней.

DECLARE @numOfUsers INT
SET @numOfUsers = SELECT COUNT(*) FROM user

SELECT DISTINCT town, @numOfUsers
FROM user

Ответ 2

Вы можете использовать COUNT(DISTINCT ...):

SELECT COUNT(DISTINCT town) 
FROM user

Ответ 3

Другой способ:

/* Number of rows in a derived table called d1. */
select count(*) from
(
  /* Number of times each town appears in user. */
  select town, count(*)
  from user
  group by town
) d1

Ответ 4

В Oracle вы можете использовать аналитические функции:

select town, count(town), sum(count(town)) over () total_count from user
group by town

Ваши другие варианты - использовать подзапрос:

select town, count(town), (select count(town) from user) as total_count from user
group by town

Ответ 5

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

        SELECT town, count(town) as total FROM user
        GROUP BY town ORDER BY total DESC

Ответ 6

Вы можете использовать DISTINCT внутри COUNT, как сказал Милковский

в моем случае:

select COUNT(distinct user_id) from answers_votes where answer_id in (694,695);

Это приведет к тому, что подсчет голосов будет считаться одним и тем же user_id как один счетчик

Ответ 7

Я знаю, что это старый пост в SQL Server:

select  isnull(town,'TOTAL') Town, count(*) cnt
from    user
group by town WITH ROLLUP

Town         cnt
Copenhagen   58
NewYork      58
Athens       58
TOTAL        174

Ответ 8

Если вы хотите выбрать город и общее количество пользователей, вы можете использовать этот запрос ниже:

SELECT Town, (SELECT Count(*) FROM User) `Count` FROM user GROUP BY Town;

Ответ 9

Попробуйте использовать следующий код:

select ccode, count(empno) 
from company_details 
group by ccode;

Ответ 10

Если вы хотите использовать опцию Select All Query With Count, попробуйте это...

 select a.*, (Select count(b.name) from table_name as b where Condition) as totCount from table_name  as a where where Condition