[SQL] SQL 쿼리에서 그룹화 COUNT의 SUM
SQLSQL 쿼리에서 그룹화 COUNT의 SUM
나는 2 개 필드가있는 테이블이 있습니다 :
ID Name -- ------- 1 Alpha 2 Beta 3 Beta 4 Beta 5 Charlie 6 Charlie
나는 '수'로, 이름으로 그룹화를 원하고 행 '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 지정하지 않고
사용하는 RDBMS 지정하지 않고
이 데모에서보세요
SELECT Name, COUNT(1) as Cnt FROM Table1 GROUP BY Name UNION ALL SELECT 'SUM' Name, COUNT(1) FROM Table1
그건 내가 총이 데이터베이스에서 프리젠 테이션 계층에서 추가, 그리고 할 것을 추천했다.
이것은 좀 더 SQL 서버 버전의 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 Server 용 당신이 하나를 시도 할 수 있습니다.
SQL Server 용 당신이 하나를 시도 할 수 있습니다.
SELECT ISNULL([NAME],'SUM'),Count([NAME]) AS COUNT FROM TABLENAME GROUP BY [NAME] WITH CUBE
-
==============================
8.나는이 질문을 해석하는 방법은 답변의 각 그룹의 소계 값을 필요로한다. 파티션을 사용하여 매우 쉽게로 회전을 합하면 :
나는이 질문을 해석하는 방법은 답변의 각 그룹의 소계 값을 필요로한다. 파티션을 사용하여 매우 쉽게로 회전을 합하면 :
SUM(COUNT(0)) OVER (PARTITION BY [Grouping]) AS [MY_TOTAL]
이것은 내 전체 SQL 호출 모습입니다 :
SELECT MAX(GroupName) [name], MAX(AUX2)[type], COUNT(0) [count], SUM(COUNT(0)) OVER(PARTITION BY GroupId) AS [total] FROM [MyView] WHERE Active=1 AND Type='APP' AND Completed=1 AND [Date] BETWEEN '01/01/2014' AND GETDATE() AND Id = '5b9xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' AND GroupId IS NOT NULL GROUP BY AUX2, GroupId
같은이 외모에서 반환 된 데이터 :
name type count total Training Group 2 Cancelation 1 52 Training Group 2 Completed 41 52 Training Group 2 No Show 6 52 Training Group 2 Rescheduled 4 52 Training Group 3 NULL 4 10535 Training Group 3 Cancelation 857 10535 Training Group 3 Completed 7923 10535 Training Group 3 No Show 292 10535 Training Group 3 Rescheduled 1459 10535 Training Group 4 Cancelation 2 27 Training Group 4 Completed 24 27 Training Group 4 Rescheduled 1 27
-
==============================
9.
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
-
==============================
10.당신은 ROLLUP을 사용할 수 있습니다
당신은 ROLLUP을 사용할 수 있습니다
select nvl(name, 'SUM'), count(*) from table group by rollup(name)
-
==============================
11.여기에 솔루션의 모든 큰하지만 반드시 (적어도 내 경우에) 기존 MySQL의 서버에 구현 될 수있다. 당신이 하위 쿼리를 사용할 수 있도록 (내가이 덜 복잡하다 생각한다).
여기에 솔루션의 모든 큰하지만 반드시 (적어도 내 경우에) 기존 MySQL의 서버에 구현 될 수있다. 당신이 하위 쿼리를 사용할 수 있도록 (내가이 덜 복잡하다 생각한다).
select sum(t1.cnt) from (SELECT column, COUNT(column) as cnt FROM table GROUP BY column HAVING COUNT(column) > 1) as t1 ;
-
==============================
12.당신은 이름에 의해 그룹을 시도하고 그 그룹의 ID를 셀 수 있습니다.
당신은 이름에 의해 그룹을 시도하고 그 그룹의 ID를 셀 수 있습니다.
SELECT name, count(id) as COUNT FROM table group by name
-
==============================
13.로 사용
로 사용
select Name, count(Name) as Count from YourTable group by Name union Select 'SUM' , COUNT(Name) from YourTable
-
==============================
14.나는 SQL 서버를 사용하고 있고 다음이 당신을 위해 작동합니다 :
나는 SQL 서버를 사용하고 있고 다음이 당신을 위해 작동합니다 :
캐스트 선택 (VARCHAR (같은 이름 (16))) '이름', 수 (명)로 '백작'등 표 1에서 이름으로 그룹 노동 조합의 모든 '합계'를 선택, 수 (명) 표 1에서
-
==============================
15.또한 수 (*)> 1을 갖는 필수. 그래서, 몇 가지 위의 쿼리를 참조 후 내 자신의 쿼리를 작성
또한 수 (*)> 1을 갖는 필수. 그래서, 몇 가지 위의 쿼리를 참조 후 내 자신의 쿼리를 작성
통사론:
select sum(count) from (select count(`table_name`.`id`) as `count` from `table_name` where {some condition} group by {some_column} having count(`table_name`.`id`) > 1) as `tmp`;
예:
select sum(count) from (select count(`table_name`.`id`) as `count` from `table_name` where `table_name`.`name` IS NOT NULL and `table_name`.`name` != '' group by `table_name`.`name` having count(`table_name`.`id`) > 1) as `tmp`;
-
==============================
16.쿼리 후 총 행 수를 얻기 위해 아래의 실행
쿼리 후 총 행 수를 얻기 위해 아래의 실행
select @@ROWCOUNT
-
==============================
17.에서 합 (S)을 선택 C (COUNT (*)> 1을 갖는의 Col_name 의해 TAB_NAME 그룹에서 S로 계산 (의 Col_name)을 선택)
에서 합 (S)을 선택 C (COUNT (*)> 1을 갖는의 Col_name 의해 TAB_NAME 그룹에서 S로 계산 (의 Col_name)을 선택)
from https://stackoverflow.com/questions/12927268/sum-of-grouped-count-in-sql-query by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 내부 조인으로 삭제 PostgreSQL을 (0) | 2020.06.21 |
---|---|
[SQL] 어떻게 SQL Server 사용자 정의 함수에서 오류를보고하는 방법 (0) | 2020.06.21 |
[SQL] 3 개 이상의 테이블이 포함 된 경우 작품을 가입하는 방법을 이해. [SQL] (0) | 2020.06.21 |
[SQL] SQLite는 문자열이 다른 문자열 쿼리가 포함 (0) | 2020.06.21 |
[SQL] 무슨 뜻 "1 BY GROUP"SQL 절을합니까? (0) | 2020.06.21 |