본문 바로가기

Programing

SQL 쿼리에서 그룹화 된 COUNT의 SUM

반응형

SQL 쿼리에서 그룹화 된 COUNT의 SUM


두 개의 필드가있는 테이블이 있습니다.

아이디 이름
--------
1 알파
2 베타
3 베타
4 베타
5 찰리
6 찰리

이름, 'count', 행 'SUM'으로 그룹화하고 싶습니다.

이름 수
------- -----
알파 1
베타 3
찰리 2
합계 6

테이블 아래에 SUM 행을 추가하는 쿼리를 어떻게 작성합니까?


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

SELECT name, COUNT(name) AS count, SUM(COUNT(name)) OVER() AS total_count
FROM Table GROUP BY name

사용중인 rdbms를 지정하지 않고

이 데모를보십시오

SQL 바이올린 데모

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

즉, 총계는 데이터베이스가 아닌 프레젠테이션 레이어에서 추가하는 것이 좋습니다.

이것은 ROLLUP을 사용하여 데이터 요약을 사용하는 SQL SERVER 버전에 조금 더 가깝습니다.

SQL 바이올린 데모

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

이 시도:

SELECT  ISNULL(Name,'SUM'), count(*) as Count
FROM table_name
Group By Name
WITH ROLLUP

다음과 같이 실행하십시오.

Select sum(count) 
  from (select Name, 
               count(Name) as Count 
          from YourTable
      group by Name);  -- 6

Union을 사용하여 행을 결합 할 수 있습니다.

select Name, count(*) as Count from yourTable group by Name
union all
select "SUM" as Name, count(*) as Count from yourTable

SQL 서버의 경우 이것을 시도 할 수 있습니다.

SELECT ISNULL([NAME],'SUM'),Count([NAME]) AS COUNT
FROM TABLENAME
GROUP BY [NAME] WITH CUBE

  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

ROLLUP을 사용할 수 있습니다.

select nvl(name, 'SUM'), count(*)
from table
group by rollup(name)

이름으로 그룹을 시도하고 해당 그룹의 ID를 계산할 수 있습니다.

SELECT name, count(id) as COUNT FROM table group by name

그것을 사용하십시오

select Name, count(Name) as Count from YourTable
group by Name
union 
Select 'SUM' , COUNT(Name) from YourTable

I am using SQL server and the following should work for you:

select cast(name as varchar(16)) as 'Name', count(name) as 'Count' from Table1 group by Name union all select 'Sum:', count(name) from Table1


After the query, run below to get the total row count

select @@ROWCOUNT

select sum(s) from (select count(Col_name) as s from Tab_name group by Col_name having count(*)>1)c

ReferenceURL : https://stackoverflow.com/questions/12927268/sum-of-grouped-count-in-sql-query

반응형