SUM сгруппированного COUNT в SQL Query
У меня есть таблица с двумя полями:
ID Name
-- -------
1 Alpha
2 Beta
3 Beta
4 Beta
5 Charlie
6 Charlie
Я хочу сгруппировать их по имени с помощью "count" и строки "SUM"
Name Count
------- -----
Alpha 1
Beta 3
Charlie 2
SUM 6
Как мне написать запрос, чтобы добавить строку SUM под таблицей?
Ответы
Ответ 1
SELECT name, COUNT(name) AS count
FROM table
GROUP BY name
UNION ALL
SELECT 'SUM' name, COUNT(name)
FROM table
ВЫВОД:
name count
-------------------------------------------------- -----------
alpha 1
beta 3
Charlie 2
SUM 6
Ответ 2
SELECT name, COUNT(name) AS count, SUM(COUNT(name)) OVER() AS total_count
FROM Table GROUP BY name
Ответ 3
Без указания того, какие rdbms вы используете
Посмотрите на эту демонстрацию
SELECT Name, COUNT(1) as Cnt
FROM Table1
GROUP BY Name
UNION ALL
SELECT 'SUM' Name, COUNT(1)
FROM Table1
Тем не менее, я бы рекомендовал, чтобы общее количество было добавлено уровнем представления, а не базой данных.
Это немного больше версии SQL SERVER с использованием Подведение итогов с помощью ROLLUP
SELECT CASE WHEN (GROUPING(NAME) = 1) THEN 'SUM'
ELSE ISNULL(NAME, 'UNKNOWN')
END Name,
COUNT(1) as Cnt
FROM Table1
GROUP BY NAME
WITH ROLLUP
Ответ 4
Попробуйте следующее:
SELECT ISNULL(Name,'SUM'), count(*) as Count
FROM table_name
Group By Name
WITH ROLLUP
Ответ 5
Пожалуйста, запустите, как показано ниже:
Select sum(count)
from (select Name,
count(Name) as Count
from YourTable
group by Name); -- 6
Ответ 6
Вы можете использовать объединение для объединения строк.
select Name, count(*) as Count from yourTable group by Name
union all
select "SUM" as Name, count(*) as Count from yourTable
Ответ 7
Для сервера Sql вы можете попробовать это.
SELECT ISNULL([NAME],'SUM'),Count([NAME]) AS COUNT
FROM TABLENAME
GROUP BY [NAME] WITH CUBE
Ответ 8
with cttmp
as
(
select Col_Name, count(*) as ctn from tab_name group by Col_Name having count(Col_Name)>1
)
select sum(ctn) from c
Ответ 9
Вы можете использовать ROLLUP
select nvl(name, 'SUM'), count(*)
from table
group by rollup(name)
Ответ 10
Вы можете попробовать группу по имени и подсчитать идентификаторы в этой группе.
SELECT name, count(id) as COUNT FROM table group by name
Ответ 11
Используйте его как
select Name, count(Name) as Count from YourTable
group by Name
union
Select 'SUM' , COUNT(Name) from YourTable
Ответ 12
После запроса выполните ниже, чтобы получить общее количество строк
select @@ROWCOUNT
Ответ 13
Я использую SQL-сервер, и у вас должно работать следующее:
выберите приведение (имя как varchar (16)) как "Имя", количество (имя) как "Количество" из группы "Таблица1" по объединению имен "все" выберите "Сумма:", количество (имя) из таблицы "1"
Ответ 14
выберите сумму из
(выберите count (Col_name) как s из группы Tab_name по Col_name, имеющему счет (*) > 1) c