Sql 对表中的数据进行分类,并根据结果进行计数
是否可以使用表对数据进行分类,并计算数据出现的次数 例如,我正在尝试提取一个查询,该查询将生活数据分类为:1-9个生活、10-49个生活、50-199个生活……等等,然后统计符合这些标准的客户机数量 所以我希望它显示如下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.
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
在子查询中使用大小写表达式将每个值放入“生命组”。根据结果分组。