会员表,名为users
里面有一个名为state 的列,存储这个会员所在的国家。
这个列并不是外键,如果是中国,存储的就是CN,如果是英国,存的就是UK这样的。现在要求查出,会员数最多的前五个国家。
并且还要查询出这个国家的会员数占所有会员的百分比。
这个查询要怎么写啊?
谢谢回答。

解决方案 »

  1.   

    try:
    select 国家,count(*) as 会员数,count(*)/(select count(*) from tt) as 百分比
    from tt group by 国家 order by count(*) desc limit 5
      

  2.   

    本帖最后由 yueliangdao0608 于 2008-11-11 08:36:04 编辑
      

  3.   

    个人认为,还是 WWWWA  的代码好
    但是,有个问题:假如有6个国家的会员数都是一样的,并且都是并列前5名,那么,怎么出数据呢?(当然了,仅仅是假如)通用一点: 假如有N个国家的会员数都是一样的,并且这N个国家排在第M名(M<=5,且M+N>6 ),那么,怎么出数据呢?
      

  4.   

    如果有这种情况,生成临时表,对COUNT(*)进行从大->小排序,取出排序名次<=5的记录