복붙노트

[SQL] 그것은) (카운트에 조건을 지정 할 수 있습니까?

SQL

그것은) (카운트에 조건을 지정 할 수 있습니까?

그것은 백작의 조건 ()을 지정할 수 있습니까? 나는 위치 열에서, 예를 들어, "관리자"에만 행을 계산하고 싶습니다.

나는 WHERE 사용하지 않는, 카운트 성명에서 그것을 할; 나도 같은 SELECT 모두 관리자와 기타를 계산해야하기 때문에 나는 그것에 대해 부탁 해요이 예에서는 나를 위해 아무 소용 없다 그래서 (카운트 (위치 = 관리자 같은), () = 기타 위치를 계산).

해결법

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

    1.그냥 where 절에 쿼리 자체를 제한 할 수없는 경우, 당신은 카운트가 집계에만 null 이외의 값을 계산한다는 사실을 사용할 수 있습니다 :

    그냥 where 절에 쿼리 자체를 제한 할 수없는 경우, 당신은 카운트가 집계에만 null 이외의 값을 계산한다는 사실을 사용할 수 있습니다 :

    select count(case Position when 'Manager' then 1 else null end)
    from ...
    

    또한 비슷한 방법으로 합계 집계를 사용할 수 있습니다 :

    select sum(case Position when 'Manager' then 1 else 0 end)
    from ...
    
  2. ==============================

    2.당신이 이런 식으로 작업을 수행 할 수 있습니다, 당신은 당신이 아니라 다른 값을 집계하기 때문에 반환되는 행을 제한하고 싶지 않아 가정 :

    당신이 이런 식으로 작업을 수행 할 수 있습니다, 당신은 당신이 아니라 다른 값을 집계하기 때문에 반환되는 행을 제한하고 싶지 않아 가정 :

    select count(case when Position = 'Manager' then 1 else null end) as ManagerCount
    from ...
    

    동일한 열에서하자 말하자면 당신은 관리자, 감독자 및 팀 리더의 값은,이 같은 각각의 수를 얻을 수 있었다 :

    select count(case when Position = 'Manager' then 1 else null end) as ManagerCount,
        count(case when Position = 'Supervisor' then 1 else null end) as SupervisorCount,
        count(case when Position = 'Team Lead' then 1 else null end) as TeamLeadCount,
    from ...
    
  3. ==============================

    3.@Guffa의 대답은 우수, 어쩌면 단지 청소기가 문 IF 함께 지적

    @Guffa의 대답은 우수, 어쩌면 단지 청소기가 문 IF 함께 지적

    select count(IF(Position = 'Manager', 1, NULL)) as ManagerCount
    from ...
    
  4. ==============================

    4.당신이 무슨 뜻인지 따라 다르지만 당신이 특정 값을 가진 행을 계산하고 싶지만, 그냥에 해당 행을 선택을 제한하지 않을 경우 의미의 다른 해석은 ...

    당신이 무슨 뜻인지 따라 다르지만 당신이 특정 값을 가진 행을 계산하고 싶지만, 그냥에 해당 행을 선택을 제한하지 않을 경우 의미의 다른 해석은 ...

    당신은 대신 COUNT ()를 사용하여 다음과 같이에서 절을 SUM ()를 사용하여 할 것입니다 : 예를 들면

    SELECT SUM(CASE WHEN Position = 'Manager' THEN 1 ELSE 0 END) AS ManagerCount,
        SUM(CASE WHEN Position = 'CEO' THEN 1 ELSE 0 END) AS CEOCount
    FROM SomeTable
    
  5. ==============================

    5.위 SQL 2005 이상을 사용하는 경우에도 피벗 키워드를 사용할 수 있습니다

    위 SQL 2005 이상을 사용하는 경우에도 피벗 키워드를 사용할 수 있습니다

    윈스 테크넷에서 더 많은 정보와

    SELECT *
    FROM @Users
    PIVOT (
        COUNT(Position)
        FOR Position
        IN (Manager, CEO, Employee)
    ) as p
    

    테스트 데이터 세트

    DECLARE @Users TABLE (Position VARCHAR(10))
    INSERT INTO @Users (Position) VALUES('Manager')
    INSERT INTO @Users (Position) VALUES('Manager')
    INSERT INTO @Users (Position) VALUES('Manager')
    INSERT INTO @Users (Position) VALUES('CEO')
    INSERT INTO @Users (Position) VALUES('Employee')
    INSERT INTO @Users (Position) VALUES('Employee')
    INSERT INTO @Users (Position) VALUES('Employee')
    INSERT INTO @Users (Position) VALUES('Employee')
    INSERT INTO @Users (Position) VALUES('Employee')
    INSERT INTO @Users (Position) VALUES('Employee')
    
  6. ==============================

    6.당신은이 뜻 :

    당신은이 뜻 :

    SELECT Count(*) FROM YourTable WHERE Position = 'Manager'
    

    그렇다면, 그 일을 그래!

  7. ==============================

    7.나는이 정말 오래 알고,하지만 난 그런 시나리오에 대한 NULLIF 트릭처럼, 나는 아직까지 단점을 찾을 수 없습니다. 그냥 아주 실용적 아니지만, 그러나 그것을 사용하는 방법을 보여줍니다 내 사본 및 pasteable 예를 참조하십시오.

    나는이 정말 오래 알고,하지만 난 그런 시나리오에 대한 NULLIF 트릭처럼, 나는 아직까지 단점을 찾을 수 없습니다. 그냥 아주 실용적 아니지만, 그러나 그것을 사용하는 방법을 보여줍니다 내 사본 및 pasteable 예를 참조하십시오.

    NULLIF는 당신에게 성능에 작은 부정적인 영향을 줄 수도 있습니다,하지만 난 여전히 빠른 서브 쿼리보다해야 같아요.

    DECLARE @tbl TABLE ( id [int] NOT NULL, field [varchar](50) NOT NULL)
    
    INSERT INTO @tbl (id, field)
    SELECT 1, 'Manager'
    UNION SELECT 2, 'Manager'
    UNION SELECT 3, 'Customer'
    UNION SELECT 4, 'Boss'
    UNION SELECT 5, 'Intern'
    UNION SELECT 6, 'Customer'
    UNION SELECT 7, 'Customer'
    UNION SELECT 8, 'Wife'
    UNION SELECT 9, 'Son'
    
    SELECT * FROM @tbl
    
    SELECT 
        COUNT(1) AS [total]
        ,COUNT(1) - COUNT(NULLIF([field], 'Manager')) AS [Managers]
        ,COUNT(NULLIF([field], 'Manager')) AS [NotManagers]
        ,(COUNT(1) - COUNT(NULLIF([field], 'Wife'))) + (COUNT(1) - COUNT(NULLIF([field], 'Son'))) AS [Family]
    FROM @tbl
    

    댓글에 감사드립니다 :-)

  8. ==============================

    8.

    SELECT COUNT(*) FROM bla WHERE Position = 'Manager'
    
  9. ==============================

    9.난 당신이 절은 계수 일부 레코드를 선택하는 간단한을 사용할 수 있다고 생각합니다.

    난 당신이 절은 계수 일부 레코드를 선택하는 간단한을 사용할 수 있다고 생각합니다.

  10. ==============================

    10.(페이스 북에서) PrestoDB SQL과 참고 바로 가기가 :

    (페이스 북에서) PrestoDB SQL과 참고 바로 가기가 :

    https://prestodb.io/docs/current/functions/aggregate.html

  11. ==============================

    11.저는 여기에 전체 및 각 선적 컨테이너 내에서 기준을 충족 숫자를 모두 포함 된 데이터 세트를 얻기 위해 한 일이다. 즉 "보다 크기가 51 이상 X %의 항목에 비해 얼마나 많은 선적 컨테이너가"내가 질문에 대답하자

    저는 여기에 전체 및 각 선적 컨테이너 내에서 기준을 충족 숫자를 모두 포함 된 데이터 세트를 얻기 위해 한 일이다. 즉 "보다 크기가 51 이상 X %의 항목에 비해 얼마나 많은 선적 컨테이너가"내가 질문에 대답하자

    select
       Schedule,
       PackageNum,
       COUNT (UniqueID) as Total,
       SUM (
       case
          when
             Size > 51 
          then
             1 
          else
             0 
       end
    ) as NumOverSize 
    from
       Inventory 
    where
       customer like '%PEPSI%' 
    group by
       Schedule, PackageNum
    
  12. ==============================

    12.이 사용하면 관리자의 수를 얻을 것이다

    이 사용하면 관리자의 수를 얻을 것이다

    Select Position, count(*) as 'Position Counter'
    from your_table 
    group by Position 
    
  13. from https://stackoverflow.com/questions/1400078/is-it-possible-to-specify-condition-in-count by cc-by-sa and MIT license