검색어로 그룹이 반환 한 레코드 수를 계산하는 방법
예를 들어 :
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
또 다른 해결책은 Count Distinct를 사용하는 것입니다.
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 문을 중첩시키는 다른 모든 솔루션이 더 나은지 여부는 확실하지 않습니다. 그러나 나는 이것이 코딩 관점에서보다 우아하다고 생각합니다.
답변
하위 쿼리없이 동일한 결과를 얻으려고했지만 아래와 같이 필요한 결과를 얻을 수있었습니다.
SELECT DISTINCT COUNT(*) OVER () AS TotalRecords
FROM temptable
GROUP BY column_1, column_2, column_3, column_4
답변
CTE가 나를 위해 일했습니다.
with cte as (
select 1 col1
from temptable
group by column_1
)
select COUNT(col1)
from cte;
답변
어때요 :
SELECT count(column_1)
FROM
(SELECT * FROM temptable
GROUP BY column_1, column_2, column_3, column_4) AS Records
답변
당신은 할 수 있습니다 :
select sum(counts) total_records from (
select count(*) as counts
from temptable
group by column_1, column_2, column_3, column_4
) as tmp