복붙노트

[SQL] SQL Server의 조건에 따라 카운트

SQL

SQL Server의 조건에 따라 카운트

나는 조건에 따라 SQL 서버의 수를 할 수있는 방법을 사람의 노하우를 않습니다.

예:

어떻게 테이블의 이름을 '시스템', 총 CaseID 기록 레코드에 대한 열 수를 할 수 있습니까?

고객 테이블

UserID     CaseID     Name
1          100        alan
1          101        alan
1          102        amy
1          103        system
1          104        ken
1          105        ken
1          106        system  

결과는 아래와 같이 표시됩니다 :

UserID    TotalCaseID    TotalRecordsWithSystem
1         7              2

해결법

  1. ==============================

    1.사용 SUM / CASE ...

    사용 SUM / CASE ...

    SELECT
        COUNT(*),  --total
        SUM(CASE WHEN name = 'system' THEN 1 ELSE 0 END) --conditional
    FROM
        myTable
    
  2. ==============================

    2.나는 그가 결과에 사용자 ID를 원 생각

    나는 그가 결과에 사용자 ID를 원 생각

    SELECT 
        userid,
        COUNT(*) as TotalcaseID, --total 
        SUM(CASE WHEN name = 'system' THEN 1 ELSE 0 END) as TotalRecordsWithSystem  
    FROM 
        myTable 
    group by userid
    
  3. ==============================

    3.

    select
    userid,
    count('x') as TotalCaseID,
    count(case when name = 'system' then 'x' else null end) as TotalRecordsWithSystem
    from CustomerTable
    group by userid
    
  4. from https://stackoverflow.com/questions/3455201/count-based-on-condition-in-sql-server by cc-by-sa and MIT license