2017-11-24 8 views
0

는 이미이 코드를 시도했다.내부 상태 계산 방법은 SQL입니까?</p> <pre><code>SELECT Count(Gender) As MaleCount, Count(Gender) As FemaleCount FROM [Session4].[dbo].[Survey] Where Gender = 'M' or Gender = 'F' </code></pre> <p>한 쿼리에서 두 개의 서로 다른 조건을 계산 할 때 나는 정확한 데이터를 얻을 수 없습니다

아래 사진 :

결과입니다.

enter image description here

SELECT TOP (1000) [Departure] 
    ,[Arrival] 
    ,[Age] 
    ,[Gender] 
    ,[CabinType] 
    ,[Q1] 
    ,[Q2] 
    ,[Q3] 
    ,[Q4] 
FROM [Session4].[DBO].[Survey] 

enter image description here

답변

5

카운트가 설명 원본 데이터입니다 :

  • COUNT(*) 카운트 모든 행을
  • 는 널 (null) 값을 계산
  • COUNT(distinct column) 카운트 뚜렷한 비 - 널
  • COUNT(1)는 COUNT (*)

이용 케이스/합계 + 때와 동일한 값 :

SELECT 
    sum(case when Gender = 'M' then 1 else 0 end) As MaleCount, 
    sum(case when Gender = 'F' then 1 else 0 end) As FemaleCount 
FROM [Session4].[dbo].[Survey] 

생산할 것이다 이런 식으로 :

MaleCount | FemaleCount 
1000  | 1255 

다른 방법으로 사용하고 있습니다.

SELECT 
    Gender, 
    Count(*) 
FROM [Session4].[dbo].[Survey] 
GROUP BY 
    Gender 

하여 간단한 goup가 생성됩니다

Gender | Count 
M  | 1000 
F  | 1255 
3

이 밖으로 시도 :

SELECT sum(case when Gender = 'M' then 1 else 0 end) As MaleCount, 
    sum(case when Gender = 'F' then 1 else 0 end) As FemaleCount 
    FROM [Session4].[dbo].[Survey] 

나를 의심하는 경우에 알려주십시오.