Sql 对表中的数据进行分类,并根据结果进行计数

Sql 对表中的数据进行分类,并根据结果进行计数,sql,count,Sql,Count,是否可以使用表对数据进行分类,并计算数据出现的次数 例如,我正在尝试提取一个查询,该查询将生活数据分类为:1-9个生活、10-49个生活、50-199个生活……等等,然后统计符合这些标准的客户机数量 所以我希望它显示如下 Lives Category | Number of Clients 1-9 Lives | 10 10-49 Lives | 20 50-199 Lives | 4 到目前为止,我已经创建了这个查询 SELECT COUNT(CASE WHEN t1.

是否可以使用表对数据进行分类,并计算数据出现的次数

例如,我正在尝试提取一个查询,该查询将生活数据分类为:1-9个生活、10-49个生活、50-199个生活……等等,然后统计符合这些标准的客户机数量

所以我希望它显示如下

Lives Category | Number of Clients
1-9 Lives  | 10
10-49 Lives  | 20
50-199 Lives  | 4
到目前为止,我已经创建了这个查询

        SELECT COUNT(CASE WHEN t1.clean_ft_ee_cnt > 0 and t1.clean_ft_ee_cnt < 10 then 1 ELSE NULL END) as "1-9 Lives",
        COUNT(CASE when t1.clean_ft_ee_cnt > 9 and t1.clean_ft_ee_cnt < 50 then 1 ELSE NULL END) as "10-49 Lives",
        COUNT(CASE when t1.clean_ft_ee_cnt > 49 and t1.clean_ft_ee_cnt < 200 then 1 ELSE NULL END) as "50-199 Lives",
        COUNT(CASE when t1.clean_ft_ee_cnt > 199 and t1.clean_ft_ee_cnt < 500 then 1 ELSE NULL END) as "200-499 Lives",
        COUNT(CASE when t1.clean_ft_ee_cnt > 499 and t1.clean_ft_ee_cnt < 2000 then 1 ELSE NULL END) as "500-1,999 Lives",
        COUNT(CASE when t1.clean_ft_ee_cnt > 1999 then 1 ELSE NULL END) as "2,000+ Lives",
        COUNT(CASE when t1.clean_ft_ee_cnt = 0 or t1.clean_ft_ee_cnt is NULL then 1 ELSE NULL END) as "Unknown Lives",
        count(t1.clean_ft_ee_cnt) as "Total Clients"
        FROM [GrpReposUserDev1_dv].[mvpGA].[mvp_client_data_t] t1
选择计数(t1.clean_ft_ee_cnt>0和t1.clean_ft_ee_cnt<10时的情况,然后选择1个ELSE NULL END)作为“1-9寿命”,
计数(当t1.clean_ft_ee_cnt>9和t1.clean_ft_ee_cnt<50时,则为1,否则为空结束)为“10-49寿命”,
计数(当t1.clean_ft_ee_cnt>49和t1.clean_ft_ee_cnt<200时,则为1,否则为空结束)为“50-199寿命”,
计数(当t1.clean_ft_ee_cnt>199和t1.clean_ft_ee_cnt<500时,则1个ELSE NULL END)为“200-499寿命”,
计数(当t1.clean_ft_ee_cnt>499和t1.clean_ft_ee_cnt<2000时,则为1,否则为空结束)为“500-1999寿命”,
计数(t1.clean_ft_ee_cnt>1999时为1,否则为空结束)为“2000+寿命”,
计数(当t1.clean_ft_ee_cnt=0或t1.clean_ft_ee_cnt为空,则为1,否则为空结束)为“未知生命”,
将(t1.clean_ft_ee_cnt)计算为“总客户”
来自[GRPREPSUSERDEV1_dv].[mvpGA].[mvp_客户端数据_t]t1

它确实起作用,但是它水平显示在不同的列中。

由于您在这里提供的绑定条件看起来非常静态,我们可以创建一个派生表,它使用T-SQL
表值构造函数
为基表指定多行,如下所示:

select 
       BT.Lives_Category ,
       count(CT.clean_ft_ee_cnt) as Number_of_Clients
from @mvp_client_data_t CT
join
             --base table here
 (
             select * from 
             (values ('1-9',1,9),
                     ('10-49',10,49),
                     ('50-199',50,199)
             )
             as Base_Table (Lives_Category,MinCnt,MaxCnt)
 ) BT    
 on CT.clean_ft_ee_cnt between BT.MinCnt and BT.MaxCnt
 group by BT.Lives_Category

在子查询中使用大小写表达式将每个值放入“生命组”。根据结果分组。