SQL 计算比例总结

---------------------------------------------------------------------用sql语句实现计算比例-------------------------------------------------------


----------取整数
select
count(*) as 人口总数,
sum(case when sex=0 then 1 else 0 end) 男人数,
sum(case when sex=0 then 1 else 0 end)/count(*)男所占比例,
sum(case when sex=1 then 1 else 0 end) 女人数,
sum(case when sex=1 then 1 else 0 end) /count(*)女所占比例
from cj_yonghu

--------------------------------------------------
人口总数 男人数 男所占比例 女人数 女所占比例
157888 92984 0 64904 0
--------------------------------------------------

--------留两位小数点,并四舍五入

--变量之间运算,如果没有指定类型,默认取整!
select
count(*) as 人口总数,
sum(case when sex=0 then 1 else 0 end) 男人数,
cast(cast(1.0*sum(case when sex=0 then 1 else 0 end)/count(*) as decimal(18,2)) as varchar(5))||'%' 男所占比例,
sum(case when sex=1 then 1 else 0 end) 女人数,
cast(cast(1.0*sum(case when sex=1 then 1 else 0 end)/count(*) as decimal(18,2)) as varchar(5))||'%' 女所占比例
from cj_yonghu

--------------------------------------------------
人口总数 男人数 男所占比例 女人数 女所占比例
157888 92984 0.59% 64904 0.41%
--------------------------------------------------

----留两位小数并乘以100
select
count(*) as 人口总数,
sum(case when sex=0 then 1 else 0 end) 男人数,
cast(cast(100.0*sum(case when sex=0 then 1 else 0 end)/count(*) as decimal(18,2)) as varchar(5))||'%' 男所占比例,
sum(case when sex=1 then 1 else 0 end) 女人数,
cast(cast(100.0*sum(case when sex=1 then 1 else 0 end)/count(*) as decimal(18,2)) as varchar(5))||'%' 女所占比例
from cj_yonghu

--------------------------------------------------
人口总数 男人数 男所占比例 女人数 女所占比例
157888 92984 58.89% 64904 41.11%

猜你喜欢

转载自blog.csdn.net/javaFay/article/details/8055031