Как использовать 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