홈>
각 항목의 총 개수 백분율을 설명 순서대로 표시하려는 항목 열이있는 SQL 테이블이 있습니다.
예를 들어
Column A
Item 1
Item 1
Item 2
Item 3
표시하고 싶습니다 :
Column A
Item 1 0.5
Item 2 0.25
Item 3 0.25
지금까지 나는 다음을 시도했다 :
SELECT [Column A], (count([Column A]) / count(*))
FROM [table]
GROUP BY [Column A]
Order by (count([Column A]) / count(*)) DESC
그러나 모든 것이 1로 돌아옵니다.
- 답변 # 1
- 답변 # 2
문제는 집계가 그룹 열에 적용된다는 것입니다. 어떤 방식 으로든 합계를 별도로 가져와야합니다. 한 가지 방법은 @ D-Shih와 같이 파생 테이블을 사용하는 것입니다. 변수에 변수를 저장하려고합니다.
또 다른 문제는 두 피연산자가 모두 INT이므로 SQL Server가 결과에 대한 INT의 데이터 유형을 유추한다는 것입니다. 정수 데이터 유형을 리턴하지 않으려면 피연산자 중 하나만 필요합니다. 근사 숫자는 나중에 100 %를 얻기 위해 개별 %를 합산해야 할 경우 문제를 일으킬 수 있으므로 정확한 숫자 데이터 유형을 사용했습니다.
DECLARE @t_item TABLE ( name VARCHAR(10) ) DECLARE @total_count NUMERIC(3,2) INSERT INTO @t_item VALUES ('ITEM1'), ('ITEM1'), ('ITEM2'), ('ITEM3'), ('ITEM3'), ('ITEM1') SELECT @total_count = COUNT(*) FROM @t_item SELECT name, COUNT(name), COUNT(*), pct_of_all = CONVERT(NUMERIC(3,2),COUNT(name))/CONVERT(NUMERIC(3,2),COUNT(*)) FROM @t_item GROUP BY name SELECT name, COUNT(name), @total_count, pct_of_all = COUNT(name)/@total_count FROM @t_item GROUP BY name
- 답변 # 3
테이블을 한 번 읽으므로 Window 함수가 이런 종류의 경우에 더 나은 솔루션이라고 생각합니다.
단일 백분율 대신 백분율, 평균 및 합계를 작성해야합니까? 아니면 쿼리가 단일 카운트보다 더 복잡합니까? 많은 하위 쿼리를 작성하는 것은 옵션이 아닙니다. 따라서 이것이 하위 쿼리보다 창 기능을 선호하는 이유입니다.
dbfiddle
CREATE TABLE T( [Column A] VARCHAR(50) ); INSERT INTO T VALUES ('Item 1'); INSERT INTO T VALUES ('Item 1'); INSERT INTO T VALUES ('Item 2'); INSERT INTO T VALUES ('Item 3'); SELECT [Column A], CNT / SUM(CNT) OVER () PERC FROM ( SELECT [Column A], CAST(COUNT(*) AS NUMERIC) CNT FROM T GROUP BY [Column A] ) X ORDER BY PERC
관련 자료
- 그룹에서 백분율을 계산하는 SQL Server
- sql server - SQL SUM () 함수가 그룹 부동 값이 0이되어야 할 때 0이 아닌 합계를 리턴하는 이유는 무엇입니까?
- Stata에서 각 그룹이 다른 변수의 동일한 합계를 갖도록 그룹을 만드는 방법은 무엇입니까?
- SQL Server에서 연속 키를 범위로 그룹화
- c# - SQL Server에서 동일한 계정 계정을 가진 행에 대한 총계를 어떻게 만들 수 있습니까?
- sql - 총계가 0 인 경우 결과 그룹 제거
- sql server - sql 서버 - 두 테이블에서 열별로 그룹화 된 모든 고유 값을 가져오고 각 값에 대해 다른 테이블에서 계산하는 방법
- java - Springboot의 Active Directory LDAP 서버에서 모든 그룹 사용자를 얻는 방법은 무엇입니까?
- sql server - 그룹별로 각 폴리에 대한 총 지출을 어떻게 계산할 수 있습니까?
- 외래 키로 SQL Server 그룹화 및 종속 열 선택
- sql - 조항 별 그룹 총계
- sql - 한 행에있는 모든 항목의 총액을 기준으로 그룹화하는 방법
- HTTP API를 통해 JBoss EAP 72 서버 그룹 중지
- SQL Server의 그룹 내에서 누적 합계 (누계)를 가져올 수 없습니다
- python - 그룹당 결과의 백분율 계산
- 총 SQL Server 쿼리 실행
- r - 그룹화 된 상자 그림에 "총"그룹을 삽입하는 방법은 무엇입니까?
- sql - 종업원 GROUP BY 종업원의 총 급여를 검색하는 방법 종업원 이름 및 유사 이름 계산
- python - Pandas 데이터 프레임의 특정 열에 대해 groupby로 총 비율을 계산하는 방법은 무엇입니까?
- SQL 서버 피벗 + 합계 + 그룹화 기준
관련 질문
- python : pyodbc를 사용하여 선택 /업데이트 /선택
- sql : 해결 방법 위도와 경도를 확인하는 트리거에 지정된 부울이 아닌 유형의 표현
- sql : EXISTS와 함께 서브 쿼리가 도입되지 않은 경우 선택 목록에 하나의 표현식 만 지정할 수 있습니다.
- SQL Server에서 RSI를 계산하는 방법은 무엇입니까?
- sql : 규칙에 따라 그룹 데이터 세트?
- SQL에 연락처 정보를 저장할 때의 모범 사례, 암호화해야합니까?
- SQL SERVER-Select 문 시퀀스 변수 만들기
- sql : MS 액세스-두 쿼리 결과의 차이 표시
- 다른 테이블에서 레code를 가져오고 SQL에서 중복 날짜를 무시하는 방법은 무엇입니까?
- sql : 트리거의 WHILE 또는 IF
COUNT
를 시도해 볼 수 있습니다[Column A]
의 그룹 기본 쿼리의 colunm. 그런 다음 총count
를 하위 쿼리에서 나누기.sqlfiddle
또는
CROSS JOIN
를 사용할 수 있습니다 총합을 구한 다음 나누십시오.