select id , count(*)*1.0/(select count(*) from tb) from tb group by id

解决方案 »

  1.   

    create table tb(id varchar(10))
    insert into tb values('a')     
    insert into tb values('a') 
    insert into tb values('a') 
    insert into tb values('b') 
    insert into tb values('b') 
    insert into tb values('b') 
    insert into tb values('c') 
    insert into tb values('c') 
    insert into tb values('c') 
    insert into tb values('d') 
    insert into tb values('d') 
    insert into tb values('d') 
    insert into tb values('a') 
    insert into tb values('a') 
    insert into tb values('a') 
    goselect id , 数量 = count(*) , [百分比(%)] = cast(count(*)*100.0/(select count(*) from tb) as decimal(18,2)) from tb group by iddrop table tb/*
    id         数量          百分比(%)
    ---------- ----------- ---------------------------------------
    a          6           40.00
    b          3           20.00
    c          3           20.00
    d          3           20.00(4 行受影响)
    */