그룹별로 반환된 레코드 수:
쿼리별로 그룹에 의해 반환된 레코드 수를 카운트하려면 어떻게 해야 합니까?
예:
select count(*)
from temptable
group by column_1, column_2, column_3, column_4
그러니까...
1
1
2
1+1+1 = 3이 되려면 위의 기록을 세어야 합니다.
다른 COUNT의 OVER 절을 사용하여 하나의 쿼리에서 둘 다 수행할 수 있습니다.
select
count(*) RecordsPerGroup,
COUNT(*) OVER () AS TotalRecords
from temptable
group by column_1, column_2, column_3, column_4
가장 간단한 해결책은 파생 테이블을 사용하는 것입니다.
Select Count(*)
From (
Select ...
From TempTable
Group By column_1, column_2, column_3, column_4
) As Z
또 다른 솔루션은 고유 개수를 사용하는 것입니다.
Select ...
, ( Select Count( Distinct column_1, column_2, column_3, column_4 )
From TempTable ) As CountOfItems
From TempTable
Group By column_1, column_2, column_3, column_4
좀 늦은 건 알지만, 아무도 이걸 제안하지 않았어요
select count ( distinct column_1, column_2, column_3, column_4)
from temptable
적어도 Oracle에서는 이 기능이 작동합니다.현재 테스트할 다른 데이터베이스가 없고 T-Sql 및 MySQL 구문에 익숙하지 않습니다.
또, 파서가 이 방법으로 하는 것이 효과적인지, 아니면 select 스테이트먼트를 nest로 하는 다른 모든 사람의 솔루션이 좋은지도 잘 모르겠습니다.하지만 나는 이것이 코딩의 관점에서 더 우아하다고 생각한다.
서브쿼리 없이 같은 것을 달성하려고 노력했더니 아래와 같이 원하는 결과를 얻을 수 있었습니다.
SELECT DISTINCT COUNT(*) OVER () AS TotalRecords
FROM temptable
GROUP BY column_1, column_2, column_3, column_4
그럼 어떻게 해?
SELECT count(column_1)
FROM
(SELECT * FROM temptable
GROUP BY column_1, column_2, column_3, column_4) AS Records
CTE가 나를 위해 일했다:
with cte as (
select 1 col1
from temptable
group by column_1
)
select COUNT(col1)
from cte;
포스트그레SQL 이 기능은 다음과 같습니다.
select count(count.counts)
from
(select count(*) as counts
from table
group by concept) as count;
다음 쿼리를 사용해 보십시오.
select top 1 TotalRows = count(*) over ()
from yourTable
group by column1, column2
다음과 같은 작업을 할 수 있습니다.
select sum(counts) total_records from (
select count(*) as counts
from temptable
group by column_1, column_2, column_3, column_4
) as tmp
아래의 코드를 실행할 수 있습니까?오라클에서 작동했습니다.
SELECT COUNT(COUNT(*))
FROM temptable
GROUP BY column_1, column_2, column_3, column_4
아래 질문에서도 얻을 수 있습니다.
select column_group_by,count(*) as Coulm_name_to_be_displayed from Table group by Column;
-- For example:
select city,count(*) AS Count from people group by city
내가 한 일
SELECT COUNT(OwnerID) FROM (SELECT OwnerID FROM #resultsTable GROUP BY OwnerID) AS c
SQL Server에서 COUNT OVER(PARTION BY {column to group by}) 파티션 기능을 사용하는 것은 어떻습니까?
예를 들어 제품 판매를 항목별로 그룹화하려는 경우ID 및 각 개별 항목의 개수를 원합니다.ID, 간단히 사용:
SELECT
{columns you want} ,
COUNT(ItemID) OVER (PARTITION BY ItemID) as BandedItemCount ,
{more columns you want}... ,
FROM {MyTable}
이 방법을 사용하면 GROUP BY를 그림에서 제외할 수 있습니다.이 경우 전체 목록을 반환할 수 있습니다(전체 데이터 세트를 표시할 필요 없이 전체 항목 수를 알아야 하는 경우 보고서 밴딩을 수행할 수 있습니다).Reporting Services).
PrestoDb의 경우 FirstField는 여러 값을 가질 수 있습니다.
select *
, concat(cast(cast((ThirdTable.Total_Records_in_Group * 100 / ThirdTable.Total_Records_in_baseTable) as DECIMAL(5,2)) as varchar), '%') PERCENTage
from
(
SELECT FirstTable.FirstField, FirstTable.SecondField, SecondTable.Total_Records_in_baseTable, count(*) Total_Records_in_Group
FROM BaseTable FirstTable
JOIN (
SELECT FK1, count(*) AS Total_Records_in_baseTable
FROM BaseTable
GROUP BY FK1
) SecondTable
ON FirstTable.FirstField = SecondTable.FK1
GROUP BY FirstTable.FirstField, FirstTable.SecondField, SecondTable.Total_Records_in_baseTable
ORDER BY FirstTable.FirstField, FirstTable.SecondField
) ThirdTable
언급URL : https://stackoverflow.com/questions/5146978/count-number-of-records-returned-by-group-by
'programing' 카테고리의 다른 글
| SQL Server 2008에서 사용자 정의 테이블 유형이 존재하는지 확인하는 방법 (0) | 2023.04.08 |
|---|---|
| T-SQL에서 테이블을 스키마로 이동하려면 어떻게 해야 합니까? (0) | 2023.04.08 |
| SQL Server 2008 R2에서 데이터베이스 이름 변경 중 오류 발생 (0) | 2023.04.08 |
| 모든 테이블, 저장 프로시저, 트리거, 제약 조건 및 모든 종속성을 하나의 SQL 문으로 삭제합니다. (0) | 2023.04.08 |
| 한 테이블에서 다른 테이블에 존재하지 않는 모든 레코드를 선택하려면 어떻게 해야 합니까? (0) | 2023.04.08 |