0
아래 표가 있습니다. 모든 고유 ID를 계산하고 Role이 Teacher 인 카운트로 나누고 싶습니다.SQL 서버 수를 조건으로 나눕니다.
아래의 표와 같은
ID Userid Role
1 A Teacher
2 b Teacher
3 c Student
뭔가. 수 (고유 ID)/수 (고유 ID) 역할 = 교사 인 경우
아래 표가 있습니다. 모든 고유 ID를 계산하고 Role이 Teacher 인 카운트로 나누고 싶습니다.SQL 서버 수를 조건으로 나눕니다.
아래의 표와 같은
ID Userid Role
1 A Teacher
2 b Teacher
3 c Student
뭔가. 수 (고유 ID)/수 (고유 ID) 역할 = 교사 인 경우
집계 된 CASE 표현식과 함께 간단한 COUNT DISTINCT를 사용할 수 있습니다. 결과가 소수를 반환하도록 float로 변환되었지만 시스템에 적용하기 전에 데이터 유형을 체크 아웃해야합니다. 샘플 데이터
CREATE TABLE #TestData (ID float, Userid nvarchar(1), Role nvarchar(7))
INSERT INTO #TestData
VALUES
(1,'A','Teacher')
,(2,'B','Teacher')
,(3,'C','Student')
쿼리
SELECT
COUNT(distinct td.ID) DistinctID
,SUM(CASE WHEN td.Role = 'Teacher' THEN 1 ELSE 0 END) Teachers
,CONVERT(float,COUNT(distinct td.ID))/CONVERT(float,SUM(CASE WHEN td.Role = 'Teacher' THEN 1 ELSE 0 END)) FinalField
FROM #TestData td
DistinctID Teachers FinalField
3 2 1.5
물론 결과에 대한
임시 테이블, 당신은 지금까지 무엇을 한거야? 너 정확히 뭐야? –
다른 역할 또는 모든 역할을 계산 하시겠습니까? –
쿼리 및 조인에 의해 생성됩니다. TableA A.에서 별개의 A.id, a.userid, a.role을 선택하십시오. 어떤 접근 방식을 사용해야할지 모르므로 표시 할 작업이 없습니다. – Toby