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 вы используете

Посмотрите на эту демонстрацию

SQL Fiddle DEMO

SELECT Name, COUNT(1) as Cnt
FROM Table1
GROUP BY Name
UNION ALL
SELECT 'SUM' Name, COUNT(1)
FROM Table1

Тем не менее, я бы рекомендовал, чтобы общее количество было добавлено уровнем представления, а не базой данных.

Это немного больше версии SQL SERVER с использованием Подведение итогов с помощью ROLLUP

SQL Fiddle DEMO

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