大多数客户位于哪里?

Where are most customers located?

我有一个类似于以下的客户数据表

CustID    InState
===================
1         0
2         0
3         1

其中 InState = 0 对应客户不在状态,Instate = 1 对应客户在状态。如果有更多州外客户,我想为 return“州外”编写一个存储过程,如果有更多州内客户,我想为 return“州内”编写一个存储过程。

我刚开始使用基本查询,这就是我所拥有的:

SELECT
        COUNT(CASE WHEN InState = 0 THEN 1 END) as 'Out-of-State',
        COUNT(CASE WHEN InState = 1 THEN 1 END) as 'In-State'
FROM Customers

这为我提供了每个类别的计数,但我只想要两者中较大者的答案。我该怎么做?

我觉得你差不多了

SELECT  CASE WHEN COUNT(
                      CASE WHEN InState = 0 THEN 1 END) > 
                          COUNT(CASE WHEN InState = 1 THEN 1 END)
             THEN 'Out of State'
             ELSE 'In State'
         END GreaterClassification
  FROM Customers

也许这样的事情可以帮助

declare @t table (custid int, instate int)
insert into @t values (1, 0), (2, 0), (3, 1)

select case when t.instate = 1 then 'in the state' else 'not in the state' end as position
from   ( select top 1 count(instate) poscount, instate 
         from  @t
         group by instate
         order by 1 desc
       ) t

结果是not in the state

 SELECT
    COUNT(CASE WHEN InState = 0 THEN 1 END) as OutOfState,
    COUNT(CASE WHEN InState = 1 THEN 1 END) as InState,
CASE
 WHEN COUNT(CASE WHEN InState = 0 THEN 1 END)- COUNT(CASE WHEN InState = 1 THEN 1 END)>0 THEN 'OUT OF STATE'
 WHEN  COUNT(CASE WHEN InState = 0 THEN 1 END)- COUNT(CASE WHEN InState = 1 THEN 1 END)<0 THEN 'IN STATE'
 ELSE 'DAMN THEY ARE EQUAL'
 END
 FROM Customers

如果instate只取01的值,则使用sum():

select (case when sum(instate) > sum(1 - instate) then 'In State'
             when sum(instate) < sum(1 - instate) then 'Not In State'
             else 'Equal'
        end)
from customers;