有一个表test:
 id  address
 1    山西
 2    陕西
 3    北京
 4    河南
 5    海南
 6    北京
 7    陕西
 求每个地方占得百分比,读取出来的数据
 string str=“['山西',占得百分比],['陕西',占得百分比],['北京',占得百分比],['河南',占得百分比],['海南',占得百分比]”
  急求解决方案,谢谢解决方案,.net

解决方案 »

  1.   

    取分组统计(每个address的出现次数)
    select address,count(1) as DataCount from test group by address
    取全部记录数
    select count(1) from test把分组统计的数据装入到一个Dictionary<string,int>,string是address,int是出现次数然后遍历这个字典,把value(也就是int的部分)除以全部记录数可以边遍历边拼接什么的,也可以遍历计算完再处理,具体看你需求。
      

  2.   

    SELECT 
         address,
        convert(varchar(10), cast(COUNT(1)*100/(select count(1) from test) as dec(18,2))) + '%' AS T
    FROM test
    GROUP BY address
      

  3.   


    select address,100*CAST(num as float)/CAST(totalcount as float) as scale from (
    select address,(select COUNT(*) from A) as totalcount,COUNT(*) as num from A group by address) A/*
    北京 28.5714285714286
    海南 14.2857142857143
    河南 14.2857142857143
    山西 14.2857142857143
    陕西 28.5714285714286
    */剩下的自己遍历数据库拼接