2015-01-05 2 views
-8

나는 다음과 같은 데이터베이스 테이블 (TableA)가 :최대 카운트의 백분율을 얻는 방법?

SlNo TeamName WorkInfo 
---- ------- ------- 
1  Team1  0  
2  Team1  0  
3  Team1  1  
4  Team2  1  
5  Team2  1 
6  Team2  1  
7  Team3  0  
8  Team3  1  

나는 또한 시작과 종료 날짜를 선택하는 두 개의 텍스트 상자가 선택한 날짜 사이의 세부 사항을 표시합니다.

현재 아래 쿼리는 선택한 시작 날짜와 종료 날짜를 기반으로 세부 정보를 제공합니다.

TeamName Count1 Count0 
-------- ----- ------ 
Team1  1  2 
Team2  3  0 
Team3  1  1 

을하지만 대신에 최대에 따라 비율 Count1Count0에서 카운트를 표시하려면 :

SELECT 
    TeamName, 
    Count(DISTINCT CASE WHEN WorkInfo = 1 THEN SlNo END) AS Count1, 
    Count(DISTINCT CASE WHEN WorkInfo = 0 THEN SlNo END) AS Count0 
FROM tableA 
WHERE (SubmitDate BETWEEN @start AND @end) 
GROUP BY TeamName 

그것은 결과 아래 사람들처럼 생산하고 있습니다.

예를 들어 아래의 예상 출력에서 ​​3은 최대 Count1 값입니다. 이를 바탕으로 카운트 값을 최대 Count1 값의 백분율로 변환해야합니다. 마찬가지로 2는 최대 값 Count0입니다. 그것을 바탕으로 나는 Count0 값의 백분율을 찾아야 만합니다.

TeamName Count1 Count0 Percentage1 Percentage0 
-------- ----- ------ ----------- ----------- 
Team1  1  2  33.33%   100% 
Team2  3  0  100%   0% 
Team3  1  1  33.33%   50% 

예상되는 출력을 생성하려면 어떻게 솔루션을 수정할 수 있습니까?

+1

데이터베이스 테이블입니까? 종류의 DataTable? 귀하의 주문이 중요합니까? 너 뭐 해봤 니? – Liath

+0

아래 주어진 쿼리를 사용했습니다. TableA에서 SELECT COUNT (*)를 선택하십시오. 그러나 총 테이블 수만 표시합니다. –

+0

@vipintp 예 테이블에있는 레코드를 계산했기 때문에 – Sybren

답변

0
SELECT TeamName, Count(TeamName) AS Count 
FROM table 
GROUP BY TeamName 

당신은 Count 기능을 사용할 필요가 - 팀 이름

을 계산하기 위해 그리고 당신은 당신이 카운트

편집 대답

을 그룹화하는 방법을 결정하기 위해 group by를 사용해야합니다.

SELECT TeamName, 
     Count(DISTINCT CASE WHEN WorkInfo = 1 
          THEN SlNo end) AS Count1 , 
     Count(DISTINCT CASE WHEN WorkInfo = 0 
          THEN SlNo end) AS Count0 
FROM tableA 
GROUP BY TeamName 
+0

사용 기능 설명 업데이트 – Matt

+1

대단히 감사합니다. 그것은 완벽하게 작동합니다. –

+1

"TeamName에 의해 tableA 그룹에서 Count0으로 Count1, Count (WorkInfo = 0에서 SlNo end 일 때 별개의 경우)로 TeamName, count (WorkInfo = 1에서 SlNo가 끝나는 별개의 대소 문자)를 선택합니다." 정확한 출력을 보여주는이 쿼리. –

관련 문제