按指定上下限区间进行数据统计的示例.sql

系统 1465 0

--测试数据
DECLARE @t TABLE(ID int PRIMARY KEY,col decimal(10,2))
INSERT @t SELECT 1 ,26.21
UNION ALL SELECT 2 ,88.19
UNION ALL SELECT 3 , 4.21
UNION ALL SELECT 4 ,76.58
UNION ALL SELECT 5 ,58.06
UNION ALL SELECT 6 ,53.01
UNION ALL SELECT 7 ,18.55
UNION ALL SELECT 8 ,84.90
UNION ALL SELECT 9 ,95.60

--统计
SELECT a.Description,
 Record_count=COUNT(b.ID),
 [Percent]=CASE
  WHEN Counts=0 THEN '0.00%'
  ELSE CAST(CAST(
   COUNT(b.ID)*100./c.Counts
   as decimal(10,2)) as varchar)+'%'
  END
FROM(
 SELECT sid=1,a=NULL,b=30  ,Description='<30' UNION ALL
 SELECT sid=2,a=30  ,b=60  ,Description='>=30 and <60' UNION ALL
 SELECT sid=3,a=60  ,b=75  ,Description='>=60 and <75' UNION ALL
 SELECT sid=4,a=75  ,b=95  ,Description='>=75 and <95' UNION ALL
 SELECT sid=5,a=95  ,b=NULL,Description='>=95'
)a LEFT JOIN @t b
 ON (b.col<a.b OR a.b IS NULL)
  AND(b.col>=a.a OR a.a IS NULL)
 CROSS JOIN(
  SELECT COUNTS=COUNT(*) FROM @t
 )c
GROUP BY a.Description,a.sid,c.COUNTS
ORDER BY a.sid
/*--结果:
Description    Record_count  Percent
------------------- ------------------ ----------------------
<30          3            33.33%
>=30 and <60  2            22.22%
>=60 and <75  0            0.00%
>=75 and <95  3            33.33%
>=95         1            11.11%
--*/

按指定上下限区间进行数据统计的示例.sql


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论